ошибка C2582: функция operator = недоступна в 'B'
Следующий код дает ошибку компиляции (по крайней мере, при использовании MS VS 2008) для строки "e = f" в main ():
ошибка C2582: функция operator = недоступна в '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;
}
Оператор присваивания по умолчанию должен быть сгенерирован для обоих классов, A и B!?
в 12.8.10: «Если определение класса явно не объявляет оператор присваивания копии, он объявляется неявно».