请求“x”中的成员“insert”,该成员属于非类类型
request for member ‘insert’ in ‘x’, which is of non-class type
我有一个名为x的映射变量,它被定义为:
std::map <std::string, std::string, std::less<std::string>,
MyAlloc<std::pair <std::string, std::string> > >
x (std::less<std::string> (), MyAlloc <std::pair <std::string, std::string> > ());
其中MyAlloc是我自己定义的自定义STL分配器。当我试图在地图中插入一对时,比如:
x.insert(std::pair<std::string,std::string>("key","value"));
我得到以下错误:
error: request for member ‘insert’ in ‘x’, which is of non-class type
‘std::map<std::basic_string<char>, std::basic_string<char>,
std::less<std::basic_string<char> >, MyAlloc<std::pair<std::basic_string<char>,
std::basic_string<char> > > >(std::less<std::basic_string<char> > (*)(),
MyAlloc<std::pair<std::basic_string<char>, std::basic_string<char> > > (*)())’
如果我使用分配器的默认构造函数,比如:,我不会得到这个错误
std::map <std::string, std::string, std::less<std::string>,MyAlloc <std::pair <std::string, std::string> > > x;
我不确定默认构造函数的初始化是否正确?
提前感谢..:)
这里要查找的关键字是"最麻烦的解析"。x
的定义被解析为函数声明。维基百科有一个例子提到了完全相同的错误信息。
您定义的是函数x
,而不是对象。
默认的ctor将使用相同的比较和分配器,所以请使用它。
相关文章:
- 将成员变量添加到共享库中的类中,不会破坏二进制兼容性吗
- 对RValue对象调用的LValue ref限定成员函数
- Qt C++ 如何在 1 个命令中砍掉属于 QStringList 成员的 QString 字母
- 获取"rw_ssid"中成员"长度"的错误请求,该成员属于非类类型"char*"
- 基类私有成员属于派生类的哪个部分?
- 如何找出成员函数属于哪个类
- C++属于模板类的成员模板的显式专用化
- 请求 中的成员,属于非类类型
- 错误:请求 中的成员属于非类类型
- 请求在"伺服控制器"中请求成员"附加",该成员属于非类类型"int"
- 请求 [..] 中的成员 [..],该成员属于非类类型 [..]
- 错误:在“连接”中请求成员“板”,该“板”属于非类类型“游戏*”
- C++ - 映射 - 错误:请求"w"中的成员'first',该成员属于非类类型 'const int'
- 错误:请求“y”中的成员“x”,该成员属于非类类型“class**”
- 错误:请求"cur"中的成员"成员",该成员属于非类类型节点<int>* 二叉树
- 错误:请求成员 ..属于非类类型
- 请求“x”中的成员“insert”,该成员属于非类类型
- 请求“this”中的成员“mCar”,该成员属于非类类型“owner*const”
- C++:如何调用属于同一类的成员函数指针
- C++ 请求成员,属于非类类型(使用类模板时,无法在主中定义)