Max*_*Max 10 c++ const vector variable-assignment
鉴于这样的类:
class Foo
{
   const int a;
};
是否可以将该类放在向量中?当我尝试时,我的编译器告诉我它不能使用默认赋值运算符.我试着写自己的,但谷歌搜索告诉我,为const数据成员的类编写赋值运算符是不可能的.我发现的一篇文章说"如果你使[数据成员] const意味着你不想让任务首先发生." 这是有道理的.我已经用const数据成员编写了一个类,我从来没有打算在其上使用赋值,但显然我需要赋值将它放在向量中.有没有办法保持const正确性?
我已经用const数据成员编写了一个类,我从来没有打算在其上使用赋值,但显然我需要赋值将它放在向量中.有没有办法保持const正确性?
您必须询问以下约束是否仍然有效
a = b;
 /* a is now equivalent to b */
如果这个约束是不正确的a和b被类型的Foo(你必须定义什么"等价"的意思语义!),那么你就不能放Foo成一个标准集装箱.例如,auto_ptr不能将其放入标准容器中,因为它违反了该要求.
如果你可以说你的类型满足这个约束(例如,如果const成员不以任何方式参与你的对象的值,但是然后考虑让它成为静态数据成员),那么你可以自己编写赋值运算符
class Foo
{
   const int a;
public:
   Foo &operator=(Foo const& f) {
     /* don't assign to "a" */
     return *this;
   }
};
但三思而后行!.对我来说,它看起来像你的类型并不满足约束!
| 归档时间: | 
 | 
| 查看次数: | 2284 次 | 
| 最近记录: |