C++ 将抽象类对象从映射存储到抽象类引用
我试图实现以下方法,以获取与其名称对应的总线,该名称作为字符串传递给该方法。这里AbstractBus是一个包含总线功能的抽象类。localBusses是一个std::mapC++ 将抽象类对象从映射存储到抽象类引用,c++,map,abstract-class,C++,Map,Abstract Class,我试图实现以下方法,以获取与其名称对应的总线,该名称作为字符串传递给该方法。这里AbstractBus是一个包含总线功能的抽象类。localBusses是一个std::map void getLocalBusByName(string& name, AbstractBus& bus) { bus = localBusses.find(name)->second; } 但是,我得到一个错误“no operator”=“匹配这些操作数” 有人能解释一下这里的错误以
void getLocalBusByName(string& name, AbstractBus& bus)
{
bus = localBusses.find(name)->second;
}
但是,我得到一个错误“no operator”=“匹配这些操作数”
有人能解释一下这里的错误以及我如何纠正它吗?代码提出了几个问题
typedef std::map<string, AbstractBus*> tBussesMap;
tBussesMap localBusses;
如果假设localBusses的类型为:
std::map
(如果AbstractBus是抽象的,那么这是唯一可行的方法)代码会出现几个问题
typedef std::map<string, AbstractBus*> tBussesMap;
tBussesMap localBusses;
假设localBusses的类型为:
std::map
(如果AbstractBus是抽象的,唯一可行的方法)您是否可以发布编译器报告的错误?localBusses是字符串到AbstractBus还是AbstractBus*(指向AbstractBus的指针)的映射?请张贴localBusses
的确切声明。您可以张贴AbstractBus的声明吗?如果它有任何纯虚拟函数,则不应编译std::map
。@sufyansiddique不是哪一个更好,而是哪一个是可行的,第二个不应编译。是否可以按照编译器报告的那样发布错误?Localbuses是字符串到AbstractBus还是AbstractBus*(指向AbstractBus的指针)的映射?请张贴localBusses
的确切声明。您可以张贴AbstractBus的声明吗?如果这有任何纯虚函数,那么std::map
不应该编译。@sufyansiddique不是哪个更好,而是什么可行,第二个不应该编译。@sufyansiddique你是wellcomed@sufyan西迪克,你很好