我正在尝试实现以下方法来获取与其名称相对应的总线,该总线作为字符串传递给方法。这里AbstractBus是一个包含总线功能的抽象类。 localBusses是一个std :: map
void getLocalBusByName(string& name, AbstractBus& bus)
{
bus = localBusses.find(name)->second;
}
然而,我收到错误“no operator”=“匹配这些操作数” 任何人都可以解释这里有什么问题,我该如何纠正呢?
答案 0 :(得分:1)
代码提出了几个问题
typedef std::map<string, AbstractBus*> tBussesMap;
tBussesMap localBusses;
或AbstractBus不是真正的抽象(不包含任何纯方法)(尽管它的名字)
在任何一种情况下,我都假设你有从AbstractBus派生的类。并且getLocalBusByName必须提供没有找到总线的情况,并避免无意中切片。
所以你应该在以下行中编写getLocalBusByName方法:
AbstractBus*
getLocalBusByName( const string& name )
{
tBussesMap::iterator it = localBusses.find(name);
if ( it != localBusses.end() )
{
return it->second;
}
return nullptr;
}
其中localBusses的类型为:std::map<string, AbstractBus*>
(如果AbstractBus是抽象的唯一可行的方法)