我正在实施Matrix类,我重载了*
和+
运算符。我也有一个构造函数:
Matrix (int row, int col, const elemType &init_val)
构造一个初始化的矩阵,在所有位置保存init_val。所以基于这个实现,我有我的测试程序:
Matrix<int> mi4 = Matrix<int> (2, 2, 3) + Matrix<int> (2, 2, 1);
编译器给出了以下错误:
testMatrix.cpp:41: error: ambiguous overload for ‘operator+’ in ‘Matrix<int>(2, 2, ((const int&)((const int*)(&3)))) + Matrix<int>(2, 2, ((const int&)((const int*)(&1))))’
Matrix.h:91: note: candidates are: Matrix<elemType> operator+(const Matrix<elemType>&, const Matrix<elemType>&) [with elemType = int]
我记得在C ++标准库中,您可以在表达式中调用构造函数。我该如何实现呢?非常感谢!
答案 0 :(得分:7)
问题不是构造函数,而是Matrix模板的operator+
声明。你有两个(也许你忘了将其中一个重命名为operator*
)?