2016-07-29 13 views
1

私は関数foo(Widget*)を提供するライブラリを使用しています。マイウィジェットがstd :: mapをラップして要素へのポインタを提供

struct WidgetManager { 

    std::map<int, Widget> dict; 

    ??? getWidget(int id); 

} 

に格納されている

もともと私はfooに渡すために便利だったという理由だけでstd::mapに(生)ウィジェットのポインタを保存します。 実際のウィジェットをマップに保存したい場合は、戻り値の型をgetWidgetにすると、ウィジェットのポインタを渡すことができますか?

私はタイプイテレータを作ることを余儀なくされましたが、ウィジェット(ポインタ)を取得するにはitr->secondにアクセスする必要があります。

答えて

2

&は、ポインタを取得するためにウィジェットをfoo(Widget*)関数に渡す直前に使用できます。

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

使い方

WidgetManager wm; 
//... 
Widget& w = wm.getWidget(id); 
foo(&w); 
//... 
関連する問題