Leo*_*Hat 6 c++ const operators
我班上有几个成员,const因此只能通过初始化列表进行初始化,如下所示:
class MyItemT
{
public:
MyItemT(const MyPacketT& aMyPacket, const MyInfoT& aMyInfo)
: mMyPacket(aMyPacket),
mMyInfo(aMyInfo)
{
}
private:
const MyPacketT mMyPacket;
const MyInfoT mMyInfo;
};
Run Code Online (Sandbox Code Playgroud)
我的类可以在我们的一些内部定义的容器类(例如向量)中使用,并且这些容器需要operator=在类中定义.
当然,我operator=需要做这样的事情:
MyItemT&
MyItemT::operator=(const MyItemT& other)
{
mMyPacket = other.mPacket;
mMyInfo = other.mMyInfo;
return *this;
}
Run Code Online (Sandbox Code Playgroud)
这当然不起作用,因为mMyPacket并且mMyInfo是const成员.
除了让这些成员不是const(我不想做),关于如何解决这个问题的任何想法?
如果你有一个可以在构造完成后更改它们的赋值运算符,那么你违反了const的定义.如果你真的需要,我认为Potatoswatter的贴片新方法可能是最好的,但如果你有一个赋值运算符,你的变量实际上不是常量,因为有人可以创建一个新实例并用它来改变它们的值