gpt4 book ai didi

c++ - 错误 : No viable overloaded =

转载 作者:太空宇宙 更新时间:2023-11-04 15:33:06 33 4
gpt4 key购买 nike

我有一个看起来像这样的类:

class MemberListEntry {
public:
int id;
short port;
long heartbeat;
long timestamp;
MemberListEntry(int id, short port, long heartbeat, long timestamp);
MemberListEntry(int id, short port);
MemberListEntry(): id(0), port(0), heartbeat(0), timestamp(0) {}
MemberListEntry(const MemberListEntry &anotherMLE);
MemberListEntry& operator =(const MemberListEntry &anotherMLE);
int getid();
short getport();
long getheartbeat();
long gettimestamp();
void setid(int id);
void setport(short port);
void setheartbeat(long hearbeat);
void settimestamp(long timestamp);
};

我有一些代码可以像这样实例化它:

   int id = stoi(address.substr(0, pos));
short port = (short)stoi(address.substr(pos + 1, address.size()-pos-1));
memcpy(&addr[0], &id, sizeof(int));
memcpy(&addr[4], &port, sizeof(short));

MemberListEntry mEntry;
mEntry = new MemberListEntry(id, port);

我收到这个错误:

 error: no viable overloaded '='
mEntry = new MemberListEntry(id, port);

知道问题的原因是什么吗?

最佳答案

你的代码应该是

MemberListEntry * mEntry;
mEntry = new MemberListEntry(id, port);

您正在使用 new 运算符在堆上分配一个对象,该运算符返回指向所创建对象的指针,并且您正在尝试将指针分配给一个对象。

这里更好的选择是在您已经在做的堆栈上分配对象。

MemberListEntry mEntry(id, port);

这将创建并初始化对象,当您的函数超出范围时,它将自动销毁。

有趣的事实:这不是 java,而是 C++。 :)

希望这对您有所帮助。

关于c++ - 错误 : No viable overloaded =,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43810918/

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