Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/136.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++类转换算子_C++_Matrix_Operator Keyword - Fatal编程技术网

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;
};
现在,即使这能起作用,我也怀疑,因为它会导致循环依赖,我不确定从语义角度看它是否有意义。并非每个矩阵都是对角矩阵,因此从矩阵转换为对角矩阵不能保留所有数据。从设计的角度来看,在这种情况下使用隐式转换是个坏主意


*另一种方法是为对角线定义运算符=常数矩阵。

谢谢,我完全是在倒行逆施。运算符=也是一个好主意。