ошибка 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: «Если определение класса явно не объявляет оператор присваивания копии, он объявляется неявно».

Ответы на вопрос(3)

Ваш ответ на вопрос