c++ - selfcreates 类数组 [2] 导致问题

标签 c++ arrays class

如代码所示,我创建了一个类 Punkt(在德语中表示点)。它是一个 array[2] 类型,用于保存 x 和 y 轴数据。代码还没有写完正确,我只是想一步步上手。 行:

bool contains (Punkt &p){
    Punkt ConTemp;
    *ConTemp = &p;

正在引起问题。用代码块编译它给我错误:

no match for operator [] (operand types arr punkt and int ).

问题出在哪里?

enter code here
#include <iostream>
#include <array>
using namespace std;
class Punkt {
    public: int XYCoord [2]={};
    void setupCoord (int x, int y){
        XYCoord[0]=x;
        XYCoord[1]=y;
    }
};
class Rechteck {
    Punkt ReCoordLu,ReCoordRo;

    double flaeche(double x, double y){
        double xy=x*y;
        return xy;
        }
    bool contains (Punkt &p){
        Punkt ConTemp;
        *ConTemp = &p;

        if (ConTemp[0]>=&&ReCoordLu[0]&&ConTemp[1]>=&&ReCoordLu[1]&&
            ConTemp[0]<=&&ReCoordRo[0]&&ConTemp[1]<=ReCoordRo[1]){
            return true;}
        else{
            return false;}
            };
    bool contains (Rechteck &){
        if (1){
            return true;}
        else
            return false;
        }
    };

int main()
{
   /* Rechteck sharedRectangle (Rechteck a , Rechteck b){
        Rechteck c;
        return Rechteck c;
        } */

    Punkt P1,P2;
    P1.setupCoord(1,1);
    P2.setupCoord(5,5);

    cout<<"hello"<<P2.XYCoord[0];

    return 0;
};

最佳答案

你具体问的问题是因为你声明了 ConTemp 作为 Punkt - 然后您尝试使用一元 * 间接通过它。修复只是用 p 初始化 ConTemp

bool contains (const Punkt &p){   // Better to take by const ref where possible.
    Punkt ConTemp = p;            // Initilize

您的测试也非常困惑。你有:

    if (ConTemp[0]>=&&ReCoordLu[0]&&ConTemp[1]>=&&ReCoordLu[1]&&
        ConTemp[0]<=&&ReCoordRo[0]&&ConTemp[1]<=ReCoordRo[1]){

应该是:

    if (ConTemp.XYCood[0]>=ReCoordLu.XYCood[0]&&ConTemp.XYCood[1]>=ReCoordLu.XYCood[1]&&
        ConTemp.XYCood[0]<=ReCoordRo.XYCood[0]&&ConTemp.XYCood[1]<=ReCoordRo.XYCood[1]){

但就我个人而言,我会重写为:

    if (ReCoordLu.XYCood[0] <= ConTemp.XYCood[0] && 
                               ConTemp.XYCood[0] <= ReCoordRo.XYCood[0] &&
        ReCoordLu.XYCood[1] <= ConTemp.XYCood[1] && 
                               ConTemp.XYCood[1] <= ReCoordRo.XYCood[1]){

在处理多重比较时,如果它们都在同一个方向,我发现它更容易阅读。

我还会将 XYCoord 重命名为 xy。它使代码更短。

关于c++ - selfcreates 类数组 [2] 导致问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42553999/

相关文章:

css - Div/class 不会水平对齐

c++ - 如何为其他类成员函数编写模板包装器方法?

javascript - 如何使用类和函数为 html5-canvas 上的多个对象设置动画?

c++ - 在编辑控件中显示无效输入的工具提示

c++ - ffmpeg 调试

c++ - 如何将字符串转换为打开以供读取的 FILE*

java - 多维数组声明中的顺序对已用内存有影响吗?

c++ - 是否存在满足以下条件的哈希函数

C变量 "forgets"接受输入后的值是多少

Javascript推送无法将对象添加到数组