使用我自己的类声明一个地图作为值类型

时间:2013-07-25 06:22:35

标签: c++

我无法使用自己的类定义地图作为值类型。这正是我想要的:

MYFILE.CPP

class myclass
{
public:

    myclass() {}
    myclass(const myclass &m):y(m.y){}
    ~myclass() {}
    int y;

};

int main()
{
    ...
    std::map<std:string, myclass> funcmap;
    ...
}

这不编译:

g++ myfile.cpp
myfile.cpp:46:33: error: wrong number of template arguments (1, should be 4)
/usr/include/c++/4.6/bits/stl_map.h:88:11: error: provided for âtemplate<class _Key, class _Tp, class _Compare, class _Alloc> class std::mapâ

如果我在地图声明中使用了myclass中的int或string,我就不会收到此错误。

1 个答案:

答案 0 :(得分:4)

你在std::string遗漏了一个冒号。你写道:

std:string

应该是:

std::string

你可以看到这个:

#include <map>
#include <string>

class myclass
{
public:

    myclass() {}
    myclass(const myclass &m):y(m.y){}
    ~myclass() {}
    int y;

};

int main()
{
    std::map<std::string, myclass> funcmap;

    return 0;
}

Compiles