将具有const字段的对象插入到容器中

Shm*_*opy 0 c++ std assignment-operator

假设我有:

class A {
public:
    const int x;
    A() : x(3) {}
}
Run Code Online (Sandbox Code Playgroud)

我想创造

std::vector<A>
Run Code Online (Sandbox Code Playgroud)

g ++抱怨默认赋值运算符在尝试执行时不起作用this->x = x,因为xconst是无法完成的.有没有办法解决?

Ser*_*ich 5

g ++抱怨默认赋值运算符不起作用,因为它试图这样做 - > x = x,由于x是const,所以不能这样做.

g ++正确抱怨.您的类不满足标准容器的可复制要求,这就是您无法使用它们的原因.

有没有办法解决?

当然有.甚至不止一种方式.

例如最明显的事情:您可以const从成员中删除限定符以使类可复制.

或者你可以将指针(或智能指针)存储到容器而不是对象(一种特定的方法就是tpg2114建议的那样).