2017-06-16 3 views
0
DepthFilter::callback_t depth_filter_cb = boost::bind(&MapPointCandidates::newCandidatePoint, &map_.point_candidates_, _1, _2); 

インターネット上で検索するものとは別のだとバインドさ関数は、このよう定義していますこのboost :: bind文を理解するには?それは私が

void MapPointCandidates::newCandidatePoint(Point* point, double depth_sigma2) 

バインド文によると、この関数は、3つのparamsを取る必要があります。最初は& map_.point_candidates_で、2番目と3番目の他のパラメータをキャッチします。

しかし実際には、定義された関数は2つのパラメータしか必要としません。それらの型はバインド文と一致しません。

+1

'boost :: bind'についてはわかりませんが、メンバ関数の場合、1つの(暗黙の)パラメータはインスタンスへのポインタです:' this' – user463035818

答えて

2

最初のパラメータは、メンバー関数の受信者(this)です。結果のバインドオブジェクトは、受信者ではなくメンバ関数のパラメータだけを呼び出す必要があります。

これは、関数的なものを受け入れるが、オブジェクトのメンバー関数を呼び出すことについては理解していないものに渡すことができます。たとえば、std :: algorithmの中の何か。

関連する問題