Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++11 包装std::映射并提供指向元素的指针_C++11_Dictionary_Iterator - Fatal编程技术网

C++11 包装std::映射并提供指向元素的指针

C++11 包装std::映射并提供指向元素的指针,c++11,dictionary,iterator,C++11,Dictionary,Iterator,我正在使用一个提供函数foo(Widget*)的库 我的小部件存储在 struct WidgetManager { std::map<int, Widget> dict; ??? getWidget(int id); } struct-WidgetManager{ std::map dict; ??getWidget(内部id); } 最初,我将(原始)小部件指针存储在std::map中,只是因为可以方便地将它们传递给foo。 如果我想在地图中存储实际的小部件,那么

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

我的小部件存储在

struct WidgetManager {

  std::map<int, Widget> dict;

  ??? getWidget(int id);

}
struct-WidgetManager{
std::map dict;
??getWidget(内部id);
}
最初,我将(原始)小部件指针存储在
std::map
中,只是因为可以方便地将它们传递给foo。 如果我想在地图中存储实际的小部件,那么
getWidget
的返回类型应该是什么,以便我可以将小部件的指针传递给foo


我被迫将其设置为迭代器类型,但我不喜欢必须访问
itr->second
才能获取小部件(指针)。

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

struct WidgetManager {
  std::map<int, Widget> dict;
  Widget& getWidget(int id);
}
WidgetManager wm;
//...
Widget& w = wm.getWidget(id);
foo(&w);
//...