我试图从一个将std :: vector包装到std :: vector的类进行隐式转换,但是我一直收到这个错误:
错误:转换为' const value_type {aka const MatrixRow}'到非标量类型&#st; :: vector'
我的类MatrixRow定义如下:
template <typename NumericType>
class MatrixRow{
public:
// a lot of other methods here
//....
//......
explicit operator std::vector<NumericType>() {return row_;}
//...
//...
private:
std::vector<NumericType> row_;
}
当我尝试在我的代码的其他部分中进行以下操作时发生错误:
std::vector<NumericType> row = obj.matrix_[0]; //obj.matrix_[0] is an object of type MatrixRow<NumericType>
这是我第一次使用隐式转换,所以我可能还没有理解如何正确使用它们。我做错了什么?
答案 0 :(得分:4)
由于您的运算符为explicit
,因此您应使用不同的语法:
std::vector<NumericType> row(obj.matrix_[0]);
顺便说一下,你可以返回const引用以避免复制:
explicit operator const std::vector<NumericType>&() const {return row_;}