std :: vector объектов и константная корректность

Учтите следующее:

class A {
public:
    const int c; // must not be modified!

    A(int _c)
    :   c(_c)
    {
        // Nothing here
    }

    A(const A& copy)
    : c(copy.c)
    {
        // Nothing here
    }    
};



int main(int argc, char *argv[])
{
    A foo(1337);

    vector<A> vec;
    vec.push_back(foo); // <-- compile error!

    return 0;
}

Очевидно, что конструктор копирования не достаточно. Что мне не хватает?

РЕДАКТИРОВАТЬ: Ofc. Я не могу изменить this-> c в методе operator = (), поэтому не понимаю, как будет использоваться operator = () (хотя это требуется для std :: vector).

15
задан eisbaw 8 November 2010 в 14:03
поделиться