我有以下类标题(为简洁起见进行了修改(:
#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()) {