映射和多态性
Maps and polymorphism
我有一个base class Adapter
,extends
两个类Device1
和Device2
。我想将两种类型的对象存储在同一个地图中,所以我尝试了这个
std::map<std::string, Adapter*> deviceMap;
bool Circuit::add(Adapter *wrapper, std::string &name)
{
if(deviceMap.insert(std::pair<std::string, Adapter*>(name, &wrapper)).second == false)
return false;
return true;
}
我在哪里像这样使用这个函数
Circuit circ;
circ.add(new Device1(*param*), "dv1");
但是我收到一条错误消息,说
main.cpp:13: error: no matching function for call to 'Circuit::add(Device1*, const char [4])'
circ.add(new Device1(*param*), "dv1");
^
我做错了什么?
circ.add(new Device1(*param*), "dv1");
尝试将非常量引用绑定到临时引用。尝试
bool Circuit::add(Adapter *wrapper, const std::string& name)
另一个小问题在生产线上
if(deviceMap.insert(std::pair<std::string, Adapter*>(name, &wrapper)).second == false)
其中使用&wrapper
而不是wrapper
(wrapper
已经是一个地址(。
相关文章:
- 多态性和功能结合
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 使用取消引用的指针的多态性会产生意外的结果.为什么?
- C++boost序列化多态性问题
- 如何查找哪个类对象位于数组的特定索引上(多态性)
- 如何在多线程中正确使用unique_ptr进行多态性?
- 具有智能指针的多态性
- 在 C++ 中在堆栈上创建实例时如何保持多态性?
- 继承/多态性 - 我是否被迫使用"protected"变量?
- C++ 多态性在代码::块 17.12 中不起作用
- C++ 泛型和多态性:这种模式可行吗?
- 为什么我们实际上需要运行时多态性?
- 如何在这个简单的最小示例中实现多态性?
- 如何使用静态多态性在 int 和指针类型之间进行转换?
- 无法初始化已知大小的矢量指针,该大小不会因多态性而更改
- 映射和多态性
- 使多态性在C++映射中工作,而不会发生内存泄漏
- C++工厂制造和多态性 ->调用由映射迭代器访问的实例的子类的虚拟方法
- std::映射、多态性和删除
- C++ 多态性 - 继承类的映射