1
我覺得我的問題很簡單而明確:如何正確地從基類的重載轉換繼承
我有基類AbstractMatrix,和Matrix它的子類,我想使簡單的換算:
namespace mtrx {
/* mycode */
class AbstractMatrix {
public:
/* -//- */
operator Matrix();
/* -//- */
}
class Matrix : public AbstractMatrix {
/* -//- */
}
}
AbstractMatrix.cpp:
AbstractMatrix::operator Matrix(){
return Matrix(data);
}
編譯器爲消息:
Matrix.h:39:12: error: expected type-specifier before ‘Matrix’
operator Matrix();
^
我做錯了什麼? 是否有可能進行此類轉換?我想是的,因爲我只想讓基於超,但沒有任何枯燥的語法構造,我需要它隱含
謝謝
我更好奇你爲什麼需要這樣做?運營商應該解決什麼問題?你不能有一個虛擬的「getter」函數返回一個'AbstractMatrix'指針嗎?或者可能使用[CRTP](https://en.wikipedia.org/wiki/Curiously_recurring_template_pattern)來了解子類? –
至於你的問題,你*確實知道符號必須在使用符號之前聲明(或者有時甚至定義)*例如foo(矩陣A)的 –
;如果我做這樣的foo(B),其中B是AbstractMatrix,則B將被轉換爲Matrix類。感謝您的建議,我最近開始學習C++,我會閱讀關於虛擬功能和CRTP,可能會幫助我。 – verganz