所以我想用运算符重载求和2个矩阵,但是我在m2矩阵变量上遇到一个错误,说“表达式必须具有整数或无作用域的枚举类型”
template <class type>
class Matrix
{
public:
Matrix(type row, type column, type index);
Matrix<type> operator+(Matrix<type>* other);
type getrow();//not important
type getcolumn();
type** getMatrix();
private:
type row;
type column;
type index;
type** matrix;
};
template<class type>
Matrix<type> Matrix<type>::operator+(Matrix<type>* other)
{
if(this->row==other->getrow()&&this->column==other->getcolumn())
{
for (int i = 0; i < this->row; i++)
{
for (int k = 0; k < this->column; k++)
{
other->getMatrix()[i][k] += this->matrix[i][k];
}
}
}
return other;
}
int main()
{
Matrix<int>* m1 = new Matrix<int>(1, 3, 1);//(row,column,index)
Matrix<int>* m2 = new Matrix<int>(3, 3, 3);
m1 = m1 + m2;//error on m2
}
我如何解决此问题寻求帮助:)
最佳答案
即使没有完整的错误输出,这里的问题也很容易解决(但将来请提供完整的错误输出)。
使用m1 + m2
,您添加两个指针,而不是两个Matrix<int>
对象(m1 + m2
本质上等效于&m1[m2]
)。
要么不使用指针和new
:
Matrix<int> m1(1, 3, 1);//(row,column,index)
Matrix<int> m2(3, 3, 3);
或取消引用指针:
*m1 = *m1 + *m2;
关于c++ - 类型名称的矩阵总和,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59190953/