我无法使用自己的类定义地图作为值类型。这正是我想要的:
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,我就不会收到此错误。
答案 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;
}