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是无法完成的.有没有办法解决?
g ++抱怨默认赋值运算符不起作用,因为它试图这样做 - > x = x,由于x是const,所以不能这样做.
g ++正确抱怨.您的类不满足标准容器的可复制要求,这就是您无法使用它们的原因.
有没有办法解决?
当然有.甚至不止一种方式.
例如最明显的事情:您可以const从成员中删除限定符以使类可复制.
或者你可以将指针(或智能指针)存储到容器而不是对象(一种特定的方法就是tpg2114建议的那样).
| 归档时间: |
|
| 查看次数: |
132 次 |
| 最近记录: |