如何使用静态函数填充静态std :: map?

时间:2012-10-04 08:11:11

标签: c++ map

基本上,我想在我的类中调用一个静态函数,它向std :: map类型的静态成员添加一个条目。

class Foo
{
    private:
        static std::map<std::string, int, StringCompare> mymap;
    public:
        static bool addEntry(std::string id);
};

std::map<std::string, int, StringCompare> Foo::mymap;

static bool Foo::addEntry(std::string id)
{
    int a = 0;
    return (mymap.insert ( std::pair<std::string, int> (id, a))).second;
}

编辑:忘了提问D:

当我编译这段代码时,它给了我错误:

derp.hpp:24:41: error: cannot declare member function ‘static bool Foo::addEntry(std::string)’ to have static linkage [-fpermissive]

我该怎么办?

1 个答案:

答案 0 :(得分:2)

对于您原来的“问题”,请使用:

Foo::addEntry("myId");

对于您遗忘的问题,只需删除static关键字。