Ich habe mich gefragt, ob es möglich ist, eine Basisklasse mit Operator-Überladungen zu erstellen, die die Kindklasse (n) verwenden könnte.Kann eine untergeordnete Klasse die Überbelegungsoperatorüberladung des übergeordneten Objekts verwenden?
Beispiel (mit Vorlage):
#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);
}
versuchte ich es mir mit einem Compile-Fehler. Was soll ich tun, wenn ich das möchte? Ist das überhaupt möglich oder muss ich virtuell verwenden und überschreiben (oder was auch immer möglich ist)?
Fehler C2679: binary 'Betreiber': kein Operator gefunden, nimmt einen rechten Operand vom Typ 'Typ' (oder gibt es keine akzeptable conversion)
Compiler: MS Visual C++ 2015
PS: Bitte sagen Sie mir, ob die Lösung den Code hässlich macht oder nicht.
Es ist normalerweise eine gute Idee, den * genau * Compiler-Fehler enthalten, die Sie erhalten. Nennen Sie auch den Namen und die Version des Compilers. –
Danke, das werde ich mir merken. Der Compiler und der Fehler sind jetzt sichtbar. – tistCoder