erro C2582: a função 'operator =' está indisponível em 'B'
O código a seguir fornece um erro de compilação (pelo menos ao usar o MS VS 2008) para a linha "e = f" em main ():
erro C2582: a função 'operator =' está indisponível em 'B'
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;
}
O operador de atribuição padrão deve ser gerado para ambas as classes, A e B!?
em 12.8.10: "Se a definição de classe não declarar explicitamente um operador de atribuição de cópia, um será declarado implicitamente."