您好我正在尝试将类型为MemberListEntry的对象插入到包含该类型的vector memberList中。为此,我试图使用vector的push_back函数,但它给了我一个错误。
MemberListEntry *object = new MemberListEntry(id, port, memberNode->heartbeat, par->getcurrtime());
memberNode->memberList.push_back(object);
MP1Node.cpp:118:41:错误:没有匹配的调用函数 “的std ::矢量::的push_back(MemberListEntry *安培)”
memberNode-> memberList.push_back(对象);
这是我的载体
vector<MemberListEntry> memberList;
在班级
班级成员{.........
更改为
memberNode->memberList.push_back<MemberListEntry>(object);
给出
错误:在'&gt;'标记之前预期的primary-expression
memberNode-&GT; memberList.push_back(对象);
答案 0 :(得分:1)
您正在尝试将指针放入不包含指针的向量中。你有两种可能性:
1-将您的vector<MemberListEntry>
更改为vector<MemberListEntry*>
2-将您的第一行更改为:
MemberListEntry object(id, port, memberNode->heartbeat, par->getcurrtime());
如果您使用第一个,请务必在向量的元素上调用delete。
答案 1 :(得分:1)
memberList
包含MemberListEntry
s而非MemberListEntry *
s。为什么要动态分配MemberListEntry
?替换
MemberListEntry *object = new MemberListEntry(id, port, memberNode->heartbeat, par->getcurrtime());
memberNode->memberList.push_back(object);
与
memberNode->memberList.push_back(MemberListEntry(id, port, memberNode->heartbeat, par->getcurrtime()));
或更好
memberNode->memberList.emplace_back(id, port, memberNode->heartbeat, par->getcurrtime());
答案 2 :(得分:0)