c++ - 从包含子类指针的映射到包含父类(super class)指针的映射的转换

标签 c++ pointers inheritance stl

所以我得到了以下简单的类层次结构:

class Parent { ... };
class Child : public Parent { ... };

我想做以下事情:

class Class1 {
  Class1(const hash_map<int64, const Parent*>& parent_map) :
    parent_map_(parent_map) { ... }
 private:
  const hash_map<int64, const Parent*>& parent_map_;
};

后来:

hash_map<int64, const Child*> child_map;
Class1 class_1(child_map);

我收到一条错误消息,提示没有从 hash_map<int64, const Child*> 进行转换至 hash_map<int64, const Parent*>存在。

我还尝试用 std::unique_ptr 替换指针s,并且看到了相同的编译器错误。有什么想法吗?

最佳答案

这是一个替代建议:

这里实际上有一个 hash_map 实例。

因此您可以使用基类简单地声明此实例:

hash_map<int64, const Parent*> map;

然后您可以随意将ParentChild 实例添加到您的map...

关于c++ - 从包含子类指针的映射到包含父类(super class)指针的映射的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21712989/

相关文章:

c++ - 算法中的二叉树

c++ - Zed Camera - 使用 openCV 在 C++ 中获取数据

java - 强制基类使用自己的方法而不是重写方法

c++ - 在没有 boost 和 c++0x 的情况下安全地进行类型删除

c++ - 模板特化问题

具有默认参数的 C++ 模板类,可能还有元编程

c++ - 下面的数组和指针示例背后的逻辑是什么?

c - 这种指针和循环的组合有什么好处吗?

c - 为什么我们不能将字符串复制到字符指针,而我们可以直接将字符串分配给它?

inheritance - 如何以编程方式 'open' Material-UI 选择字段?