所以我得到了以下简单的类层次结构:
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;
然后您可以随意将Parent
或Child
实例添加到您的map
...
关于c++ - 从包含子类指针的映射到包含父类(super class)指针的映射的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21712989/