gpt4 book ai didi

c++ - 允许成员为 const,同时仍然支持类上的 operator=

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:10:29 25 4
gpt4 key购买 nike

我的类中有几个成员是const,因此只能通过初始化列表进行初始化,如下所示:

class MyItemT
{
public:
MyItemT(const MyPacketT& aMyPacket, const MyInfoT& aMyInfo)
: mMyPacket(aMyPacket),
mMyInfo(aMyInfo)
{
}

private:
const MyPacketT mMyPacket;
const MyInfoT mMyInfo;
};

我的类可以用在我们内部定义的一些容器类(例如 vector )中,这些容器需要在类中定义operator=

当然,我的 operator= 需要做这样的事情:

MyItemT&
MyItemT::operator=(const MyItemT& other)
{
mMyPacket = other.mPacket;
mMyInfo = other.mMyInfo;
return *this;
}

这当然不起作用,因为 mMyPacketmMyInfoconst 成员。

除了使这些成员成为非const(我不想这样做)之外,还有关于如何解决这个问题的任何想法吗?

最佳答案

如果您有一个可以在构造完成后更改它们的赋值运算符,那么您有点违反了 const 的定义。如果你真的需要,我想Potatoswatter的 placement new 方法可能是最好的,但是如果你有一个赋值运算符,你的变量就不是真正的 const,因为有人可以创建一个新实例并使用它来更改它们的值

关于c++ - 允许成员为 const,同时仍然支持类上的 operator=,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2620324/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com