包装std :: map并提供指向元素的指针

时间:2016-07-29 19:03:55

标签: c++11 dictionary iterator

我正在使用一个提供函数foo(Widget*)的库。

我的小部件存储在

struct WidgetManager {

  std::map<int, Widget> dict;

  ??? getWidget(int id);

}

最初我在std::map中存储(原始)Widget指针只是因为将它们传递给foo很方便。 如果我想在地图中存储实际的Widgets,那么getWidget的返回类型应该是什么,以便我可以将Widget的指针传递给foo?

我被迫使它成为类型迭代器,但我不喜欢我必须访问itr->second来获取Widget(指针)。

1 个答案:

答案 0 :(得分:2)

您可以在将窗口小部件传递给&函数之前使用foo(Widget*)来获取指向它的指针。

struct WidgetManager {
  std::map<int, Widget> dict;
  Widget& getWidget(int id);
}

用法

WidgetManager wm;
//...
Widget& w = wm.getWidget(id);
foo(&w);
//...