我一直在問自己是否有可能創建一個基類,該基類有子類可以使用的操作符重載。子級可以使用父級的asignment操作符重載嗎?
實施例(使用模板):
#include <cassert>
template<typename T>
struct Base {
T value {};
Base& operator=(const T& newVal) { this->value = newVal; return *this; }
};
template<typename T>
struct Child : Base<T> {
};
int main() {
Child<int> ch {};
assert(ch.value == 0);
ch = 10; // compilation error here
assert(ch.value == 10);
}
我與編譯錯誤嘗試過自己。如果我想這樣做,我應該怎麼做?這甚至是可能的,或者我必須使用虛擬並覆蓋它(或任何可能的 )?
錯誤C2679:二進制 '運算符':沒有操作員發現了採用類型 '類型' 的 右邊的操作數(或沒有可接受 轉換)
編譯器:MS的Visual C++ 2015
PS:請告訴我解決方案是否使代碼變得難看。
通常包含* exact *編譯器錯誤是一個好主意。還包括編譯器名稱和版本。 –
謝謝,我會牢記這一點。編譯器和錯誤現在可見。 – tistCoder