たとえば、私が持っている場合
deque<int> a;
a.front()
、a.back()
およびa.push_front()
、への関数ポインタを使用したいのですが、a.push_back()
それを実現できますか? はいの場合、どのように?
メンバー関数へのポインターは、を渡す必要があるため、通常のポインターとは異なるタイプの関数ポインターですthis
。最善の解決策は、ラッパー関数を次のように実装することです。
template<typename T>
T deque_front(std::deque<T> *q) {
return q->front();
}
(非静的)メンバー関数を呼び出すには、それを呼び出すオブジェクト(および関数のパラメーター)が必要です。これは、メンバー関数に(非表示の)追加パラメーターをthis
(効果的に)取得させることによって実装されます。
c ++ 11を使用している場合は、ラムダを記述してこれを行うかstd::bind
、dequeのインスタンスとメンバー関数をバインドするために使用できます。