子类化 C++ Map/Dictionary

Subclassing C++ Map/Dictionary

我的 class 继承自地图对象:

这是我尝试实现的方法:

double MyCustomClass::returnValueForKey(string key){
    return this->find(key); //<--- No Viable conversion from iterator
}

我怎样才能让这样的东西工作?

如果您正在谈论的 Map 对象是 std::Map,那么让 std::Map 对象成为您的 MyCustomClass 的成员并以这种方式扩展功能会更好.

除了一些可以被认为是主观的设计原因之外,这里真正的罪过是扩展一个没有虚拟析构函数的class。

这意味着当您在 MyCustomClass 对象之一上调用 delete 时,父对象 class 的析构函数将永远不会被调用。

要解决编译代码的机械问题,您只需取消引用生成的迭代器:

return find(key)->second;

当然这是一个糟糕的解决方案,因为问题本身是从我们已经做出错误选择的位置开始的。

  1. 为什么不简单地使用 [] 运算符而不是此自定义代码?
  2. 为什么一开始还要派生自 std::map?这是 a bad idea,无论问题是什么,几乎肯定有更好的方法来解决它。
  3. 即使此代码正确,如果 key 不存在于地图中会怎样?