小编JJa*_*ngo的帖子

您可以创建继承类的 std::map 吗?

我想知道是否可以创建继承类的指针映射。这是我正在尝试做的事情的一个例子:

#include <string>
#include <map>

using namespace std;

class BaseClass
{
    string s;
};

class Derived1 : public BaseClass
{
    int i;
};

class Derived2 : public Derived1
{
    float f;
};

// Here's what I was trying, but isn't working
template<class myClass>
map<string, myClass>m;

int main()
{
    // Add BaseClasses, Derived1's, and/or Derived2's to m here
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:

main.cpp(23):错误 C2133:“m”:未知大小
main.cpp(23): 错误 C2998: 'std::map<std::string,myClass>m' :不能是模板定义

我明白为什么会出现此错误,但我想知道是否可以创建一个可以保存不同级别的继承类的映射?如果没有,是否可以创建某种可以容纳各种类别类型的管理系统?或者我必须制作不同的地图/向量/数组/等。对于每种类型的课程?

c++ inheritance stdmap

6
推荐指数
2
解决办法
9422
查看次数

标签 统计

c++ ×1

inheritance ×1

stdmap ×1