无效使用非静态数据成员(类型定义地图)

在我的头文件,我有无效使用非静态数据成员(类型定义地图)

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)); 

...因为maincMainClass其参考您收到的目的地,让您读取数据的实例。

回答:

首先,您必须决定您的操作员>>所做的操作以及它使用的“地图”标记的实例。

以上是 无效使用非静态数据成员(类型定义地图) 的全部内容, 来源链接: utcz.com/qa/257258.html

回到顶部