将元素从类外部插入私有映射

时间:2014-11-05 00:49:51

标签: c++ map insert typedef

我在头文件中有一张地图

    public:
    typedef map<string, int> mymap;

    private:
          mymap m;

在main.cpp中,我想将值插入“m”,这是地图的同义词。我如何插入值?喜欢

    m.insert(...);

1 个答案:

答案 0 :(得分:2)

您无法直接插入它们,因为m是私有成员。您只能从课堂外访问公共成员(除非main()是该课程的朋友,这是不可能的)。

可能的解决方案包括添加(或使用现有的)将为您插入的公共方法:

public:
    void insert(std::pair<string, int> const &);
    void insert(string const &, int);

或者将地图公开(可能是一个坏主意):

public:
    mymap m;

或者将您的main()功能添加为班级的朋友(几乎肯定是一个坏主意):

friend int main();
// Or, if your main() accepts the standard argc/argv parameters:
friend int main(int argc, char **argv);