通过引用传递映射冲突消息



我有以下类标题(为简洁起见进行了修改(:

#include <map>
#include <vector>
#include <string>
class ComMon
{
//Properties
public:
typedef std::map<int, std::map<int, int>> CMD_Map;
//<Level_Number, <Member_ID, Role_ID (default=0)>>
static int Add_Platform(int LevelNO,int MemberID, int RoleID,CMD_Map *CurrentMap);
......
}

以及相关的cpp文件(为简洁起见进行了修改(:

int ComMon::Add_Platform(int LevelNO, int MemberID, int RoleID, ComMon::CMD_Map *CurrentMap)
{
if (CurrentMap->empty) {
std::map<int, int> InnerMap;
InnerMap.insert_or_assign(MemberID, RoleID);
CurrentMap->insert_or_assign(LevelNO, InnerMap);
}
else {
//see if Level is in Map
int Levels = (CurrentMap->size);
if (Levels >= LevelNO) {
//get inner list for the level
CurrentMap[LevelNO].insert_or_assign(MemberID,RoleID);
}
else {
//add new level
std::map<int, int> InnerMap;
InnerMap.insert_or_assign(MemberID, RoleID);
CurrentMap[LevelNO].insert_or_assign(LevelNO, InnerMap);
}
}

return 0;
}

当我编译时,我得到以下错误消息:

错误C3867'std::_Tree>:empty':非标准语法;使用"&"创建指向成员的指针

错误指向:

if (CurrentMap->empty) {

如果我将行更改为:

if (&CurrentMap->empty) {

并尝试编译,我得到以下错误消息:

'&':对绑定成员函数表达式的非法操作

再次指向同一行代码。

有人能帮忙吗?

empty是一个对象方法;您想调用它,而不是获取它的内存地址。要进行函数调用,请添加后括号以指定要传递给调用的参数列表(在这种情况下,是一个没有值的参数列表(,例如:

if (CurrentMap->empty()) {

最新更新