0

たとえば、私が持っている場合

deque<int> a;

a.front()a.back()およびa.push_front()、への関数ポインタを使用したいのですが、a.push_back()それを実現できますか? はいの場合、どのように?

4

2 に答える 2

0

メンバー関数へのポインターは、を渡す必要があるため、通常のポインターとは異なるタイプの関数ポインターですthis。最善の解決策は、ラッパー関数を次のように実装することです。

template<typename T>
T deque_front(std::deque<T> *q) {
  return q->front();
}
于 2012-09-27T02:39:48.713 に答える
0

(非静的)メンバー関数を呼び出すには、それを呼び出すオブジェクト(および関数のパラメーター)が必要です。これは、メンバー関数に(非表示の)追加パラメーターをthis(効果的に)取得させることによって実装されます。

c ++ 11を使用している場合は、ラムダを記述してこれを行うかstd::bind、dequeのインスタンスとメンバー関数をバインドするために使用できます。

于 2012-09-27T02:44:17.870 に答える