C++类转换算子
我有两个类,一个是矩阵,然后是从矩阵类继承的对角矩阵 显然,从对角线到矩阵的转换很容易,但转换回来需要转换C++类转换算子,c++,matrix,operator-keyword,C++,Matrix,Operator Keyword,我有两个类,一个是矩阵,然后是从矩阵类继承的对角矩阵 显然,从对角线到矩阵的转换很容易,但转换回来需要转换 class Diagonal : public Matrix<T> { operator Matrix<T>() const; }; 存在于我的代码中,我认为应该将其转换。总的来说,我有: Matrix<float> theMatrix(size,size); Diagonal<float> theDiag(size,siz
class Diagonal : public Matrix<T>
{
operator Matrix<T>() const;
};
存在于我的代码中,我认为应该将其转换。总的来说,我有:
Matrix<float> theMatrix(size,size);
Diagonal<float> theDiag(size,size);
theDiag = theMatrix;
除了转换,一切都正常,这告诉我:
no known conversion for argument 1 from ‘Matrix<float>’ to ‘const Diagonal<float>&’
有什么建议吗?谢谢。您的代码
class Diagonal : public Matrix<T>
{
operator Matrix<T>() const;
};
定义从对角线到矩阵的转换,而赋值要求从矩阵到对角线的转换
你是不是想写这个
class Matrix<T>
{
operator Diagonal<T>() const;
};
现在,即使这能起作用,我也怀疑,因为它会导致循环依赖,我不确定从语义角度看它是否有意义。并非每个矩阵都是对角矩阵,因此从矩阵转换为对角矩阵不能保留所有数据。从设计的角度来看,在这种情况下使用隐式转换是个坏主意
*另一种方法是为对角线定义运算符=常数矩阵。谢谢,我完全是在倒行逆施。运算符=也是一个好主意。