Учтите следующее:
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
).
operator=
изменять член const, то теперь у вас есть средства для того, чтобы любой фрагмент кода делал то же самое. - person UncleBens   schedule 08.11.2010