我在结构体“matrix”中有两个构造函数。
matrix(const unsigned int m, const unsigned int n);
matrix(const std::vector<std::vector<double>> &elements);
当我像这样调用它时
matrix mat({{1},{1}});
它抛出错误。
call of overloaded ‘matrix(<brace-enclosed initializer list>)’ is ambiguous
note: candidate: matrix::matrix(const std::vector<std::vector<double> >&)
note: candidate: matrix::matrix(const matrix&)
所以,它认为{{1},{1}}是一个"矩阵"对象,但是为什么呢?
{1}
是一个vector<double>
,{{1}, {1}}
是std::vector<std::vector<double>>
。如果你移除第一个构造函数,代码仍然应该能够编译通过。 - greedy52