我一直在问自己是否有可能创建一个基类,该基类有子类可以使用的操作符重载。子级可以使用父级的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