我正在做一个课程项目,我在cpp中创建了一个带有2d向量的矩阵类。 我正在尝试使用矩阵obj覆盖*运算符到全局运算符。
这是我的声明:
friend Matrix<T> operator * (T t, const Matrix<T> &m);
这是功能:
template <typename T>
Matrix<T> operator * (T t, const Matrix<T> &m)
{
int i, j;
Matrix<T> ans(rows, cols);
for (i = 0; i < rows; i++)
{
for (j = 0; j < rows; j++)
{
ans[i][j] = t * m.mat[i][j];
}
}
return ans;
}
我的错误是:错误C2244:'Matrix :: operator *':无法将函数定义与现有声明匹配
我的代码有什么问题?
答案 0 :(得分:1)
您声明的friend
函数虽然在课堂上,但不是成员函数
像这样调整定义:
template <typename T>
Matrix<T> operator * (T t, const Matrix<T> &m)
{
// […]
}