我的类继承自地图对象:
这是我尝试实施的方法:
double MyCustomClass::returnValueForKey(string key){
return this->find(key); //<--- No Viable conversion from iterator
}
我怎样才能让这样的事情发挥作用?
答案 0 :(得分:2)
要解决获取代码进行编译的机械问题,您只需要取消引用生成的迭代器:
return find(key)->second;
当然这是一个糟糕的解决方案,因为问题本身是从我们已经做出错误选择的位置开始的。
[]
运算符代替此自定义代码?std::map
?这是a bad idea,无论问题是什么,几乎肯定有更好的方法来解决它。key
时会发生什么?答案 1 :(得分:1)
如果您正在谈论的Map对象是std::Map
,那么将std::Map
对象作为MyCustomClass
的成员并以这种方式扩展功能会更好。< / p>
除了可以被认为是主观的一些设计原因之外,这里真正的罪恶是扩展一个没有虚拟析构函数的类。
这意味着当您在其中一个delete
对象上调用MyCustomClass
时,父类的析构函数将永远不会被调用。