[英]C++ Class Conversion Operator
我有兩個類,一個Matrix,然后是一個從Matrix類繼承的對角矩陣。
顯然,從對角線到矩陣的轉換很容易,但是向后轉換需要轉換。
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;
};
定義了從Diagonal<T>
到Matrix<T>
的轉換,而您的分配期望從Matrix<T>
到Diagonal<T>
。
您是要寫這個嗎?
class Matrix<T>
{
operator Diagonal<T>() const;
};
現在,即使這可行*(我懷疑,因為它將導致循環依賴),但我不確定從語義角度來看是否有意義。 並非每個矩陣都是對角矩陣 ,因此從矩陣轉換為對角矩陣無法保留所有數據。 從設計的角度來看,在這種情況下使用隱式轉換是一個壞主意。
*一種替代方法是為Diagonal<T>
定義operator=(const Matrix<T>&)
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.