无法将函数定义与cpp中的现有声明匹配

时间:2015-01-17 16:12:26

标签: c++ generics operator-overloading friend

我正在做一个课程项目,我在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 *':无法将函数定义与现有声明匹配

我的代码有什么问题?

1 个答案:

答案 0 :(得分:1)

您声明的friend函数虽然在课堂上,但不是成员函数 像这样调整定义:

template <typename T>
Matrix<T> operator * (T t, const Matrix<T> &m)
{
    // […]
}