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."

Antworten auf die Frage(3)

Ihre Antwort auf die Frage