【发布时间】:2019-11-20 20:39:32
【问题描述】:
我有一个关于 c++ 的考试。下面有说明:
- 矩阵 *m2 = 新矩阵(3,4,9); → 9 的 3x4 矩阵
- 矩阵运算 → m2=m2+m3
我正在尝试将 m2 和 m3 相加并放置 m2。但是有一个错误:'Matrix*'和'Matrix*'类型的无效操作数到二进制'operator+'。
main.cpp:
int main(){
Matrix *m2= new Matrix(3,4,9);
Matrix *m3= new Matrix(3,4,2);
m2= m2+m3;
return 0;
}
矩阵.h:
class Matrix{
private:
int x,y;
vector<vector <int> > matris;
public:
Matrix(int row,int col,int z);
Matrix* operator+(Matrix* no2);
};
矩阵.cpp:
Matrix::Matrix(int row,int col, int z){
Matrix::x=row;
Matrix::y=col;
for(int i=0;i<x;i++){
matris.push_back(vector <int>(y));
}
for(int i=0;i<Matrix::x;i++){
for(int j=0;j<Matrix::y;j++){
Matrix::matris[i][j]=z;
}
}
}
Matrix* Matrix::operator +(Matrix* no2){
Matrix* temp = new Matrix(this->x,this->y,0);
for(int i=0;i<this->x;i++){
for(int j=0;j<this->y;j++){
temp->matris[i][j]=this->matris[i][j]+ no2->matris[i][j];
}
}
return temp;
}
【问题讨论】:
-
你为什么在这里使用指针?
-
@Axalo 不,它没有。问题是指针不是全局 vs 成员
-
Matrix *m2= new Matrix(3,4,9);-- 不。摆脱所有的指针,大多数(如果不是全部)问题都会得到解决。没有任何理由在您的程序中使用单个new,因为默认情况下Matrix可以毫无问题地复制。
标签: c++ matrix operator-overloading