允许成员为const,同时仍然在类上支持operator =

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并且mMyInfoconst成员.

除了让这些成员不是const(我不想做),关于如何解决这个问题的任何想法?

Mic*_*zek 7

如果你有一个可以在构造完成后更改它们的赋值运算符,那么你违反了const的定义.如果你真的需要,我认为Potatoswatter的贴片新方法可能是最好的,但如果你有一个赋值运算符,你的变量实际上不是常量,因为有人可以创建一个新实例并用它来改变它们的值

  • 经典短语是C++保护免受Murphy,而不是Machiavelli. (2认同)