我正在写一个矩阵程序,我正在尝试乘以一个点和一个矩阵.我一直在我的对象上得到一个错误(结果和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;
}
Run Code Online (Sandbox Code Playgroud)
我的两个课程是:
//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;
}
};
Run Code Online (Sandbox Code Playgroud)
Ada*_*ras 17
在您的Point
班级中,您将element
成员定义为:
double element[4];
Run Code Online (Sandbox Code Playgroud)
这是一维数组.但是,在您的函数中,您尝试访问它,就好像它是一个二维数组:
result.element[i][k]
P.element[j][k]
Run Code Online (Sandbox Code Playgroud)
我认为你需要重新思考你的矩阵乘法应该如何工作.