Учтите следующее:
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).