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

Insert element into private map from outside of the class

本文关键字:映射 插入 元素 外部      更新时间:2023-10-16

我在头文件中得到了一个作为的映射

    public:
    typedef map<string, int> mymap;
    private:
          mymap m;

在main.cpp中,我想将值插入到"m"中,这是映射的同义词。如何插入值?像

    m.insert(...);

不能直接插入它们,因为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);