声明一个以我自己的类作为值类型的映射

Declaring a map with my own class as the value type

本文关键字:类型 映射 一个以 我自己 自己的 声明      更新时间:2023-10-16

我无法用自己的类作为值类型来定义映射。这正是我正在尝试的:

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â

如果在映射声明中使用int或字符串代替myclass,则不会出现此错误。

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;
}

编译