簡體   English   中英

C ++類轉換運算符

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM