gpt4 book ai didi

c++ - 表达式必须有指向对象类型的指针

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:52:52 25 4
gpt4 key购买 nike

我正在编写一个矩阵程序,目前正在尝试将一个点和一个矩阵相乘。我的对象(结果和 P)在这个函数中不断出现错误“表达式必须具有指向对象类型的指针”:

//Point Class functions
Point Matrix44::operator*(const Point & P){
Point result;
for (int i = 0; i < 4; i++) {
for (int k = 0; k < 4; k++) {
result.element[i][k] = 0;
for (int j = 0; j < 4; j++) {
result.element[i][k] = element[i][j] * P.element[j][k] + result.element[i][k];
}
}
}
return result;

}

我的两个类是:

    //Matrix class
class Point;

class Matrix44 {
private:
double element[4][4];
public:
Matrix44(void);
Matrix44 transpose(void) const;
friend istream& operator>>(istream& s, Matrix44& t);
friend ostream& operator<<(ostream& s, const Matrix44& t);
Matrix44 operator *(Matrix44 b);
Point operator*(const Point & P);
};


//Point class
class Point {
double element[4];
friend class Matrix44;
public:
Point(void) {
element[0] = element[1] = element[2] = 0;
element[3] = 1;
}
Point(double x, double y, double z){
element [0]=x;
element [1]=y;
element [2]=z;
element [3]=1;
}

};

最佳答案

在您的 Point 类中,您将 element 成员定义为:

double element[4];

这是一个一维数组。但是,在您的函数中,您试图像访问一个二维维数组一样访问它:

result.element[i][k]
P.element[j][k]

我认为您需要重新考虑矩阵乘法的确切工作方式。

关于c++ - 表达式必须有指向对象类型的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7423424/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com