无效使用非静态数据成员(类型定义地图)
在我的头文件,我有无效使用非静态数据成员(类型定义地图)
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








