错误:没有可行的超载=
Error: No viable overloaded =
我有一个看起来像这样的类:
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);
您使用新操作符在堆上分配一个对象,该新操作员将指针返回到创建的对象,并且您正在尝试将指针分配给对象。
更好的替代方案将是您已经在做的堆栈上分配对象。
MemberListEntry mEntry(id, port);
这会创建并初始化对象,当您的功能范围范围内时,它将自动破坏。
有趣的事实:这不是Java,它是C 。:(
希望这会有所帮助。
相关文章:
- 警告处理为错误这里有什么问题
- 为什么我的超载"+"运算符返回的总额错误?
- C bool表达式作为函数参数调用错误的超载
- 错误:没有可行的超载=
- 错误:找不到匹配的超载函数
- C 错误 - 函数不能超载
- 超载 *运算符时无法转换错误
- 此代码运算符超载中的错误是什么?
- 触发编译时间错误时,constexpr函数的超载被调用
- 在两个层迭代器中超载 产生奇怪的错误
- C 流插入超载错误
- 学习OOP:超载 OR =操作员错误
- 为什么我无法使错误操作员()无法超载
- 运算符在C 中超载(小错误)
- <<操作员在C 中超载错误
- 超载功能中的错误
- 超载流提取操作员错误
- 在尝试超载<<时链接错误2005和1169操作员
- 超载功能错误消息
- 超载"+"操作员,结果错误?