Fehler C2582: 'operator =' Funktion ist in 'B' nicht verfügbar
Folgender Code gibt einen Kompilierungsfehler (zumindest bei Verwendung von MS VS 2008) für die Zeile "e = f" in main () aus:
Fehler C2582: 'operator =' Funktion ist in 'B' nicht verfügbar
class A {
public:
A() { }
static const double x;
};
const double A::x = 0.0;
class B {
public:
B() : x(0.0) { }
const double x;
};
int main( int argc, char *argv[] )
{
A c,d;
B e,f;
c = d;
e = f;
return 0;
}
Der Standardzuweisungsoperator sollte für beide Klassen, A und B, generiert werden!?
in 12.8.10: "Wenn die Klassendefinition einen Kopierzuweisungsoperator nicht explizit deklariert, wird einer implizit deklariert."