无效使用非静态数据成员(类型定义地图)
在我的头文件,我有无效使用非静态数据成员(类型定义地图)
typedef map <string, MyClass*> myMap; class MainClass {
myMap map;
public:
friend istream& operator>> (istream &is, MainClass &mainc) {
string name = "Geo";
MyClass* sample = new MyClass();
map.insert(myMap::value_type(name, sample));
return is; }
};
在编译过程中,我得到:
line 4: error: invalid use of non-static data member 'MainClass::map' line 9: error: from this location
我试图改变MYMAP地图MYMAP地图,但我得到同样的错误。
回答:
由于您的operator>>
是朋友MainClass
,它不是用MainClass
特定实例相关联(即,它没有收到this
指针)。
因此,当您尝试做:
map.insert(myMap::value_type(name, sample));
编译器不知道你想参考一下实例的map
成员。显然,在这种情况下,你的意思是:
mainc.map.insert(myMap::value_type(name, sample));
...因为mainc
是MainClass
其参考您收到的目的地,让您读取数据的实例。
回答:
首先,您必须决定您的操作员>>所做的操作以及它使用的“地图”标记的实例。
以上是 无效使用非静态数据成员(类型定义地图) 的全部内容, 来源链接: utcz.com/qa/257258.html