我可以在算术表达式中调用构造函数吗?

时间:2012-01-10 04:06:58

标签: c++

我正在实施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 ++标准库中,您可以在表达式中调用构造函数。我该如何实现呢?非常感谢!

1 个答案:

答案 0 :(得分:7)

问题不是构造函数,而是Matrix模板的operator+声明。你有两个(也许你忘了将其中一个重命名为operator*)?