8

参照であるパラメーターを持つメンバー関数を呼び出して、反復処理したいポインターのコンテナーがあります。STLでこれを行うにはどうすればよいですか?

私の現在の解決策は、パラメーターにboost::bindとboost::refを使用することです。

// Given:
// void Renderable::render(Graphics& g)
//
// There is a reference, g, in scope with the call to std::for_each
//
std::for_each(
  sprites.begin(),
  sprites.end(),
  boost::bind(&Renderable::render, boost::ref(g), _1)
);

関連する質問 (現在の解決策を導き出した元) は、boost::bind with functions that have parameters that are referencesです。これは特にブーストでこれを行う方法を尋ねます。ブーストなしでどのように行うかを尋ねています。

編集:何も使用せずにこれと同じことを行う方法がありますboost。と フレンドを使用std::bindすることで、同じコードを次のように C++11 互換コンパイラで記述およびコンパイルできます。

std::for_each(
  sprites.begin(),
  sprites.end(),
  std::bind(&Renderable::render, std::placeholders::_1, std::ref(g))
);
4

1 に答える 1

5

これは、の設計に関する問題です<functional>。boost::bindまたはtr1::bindのいずれかを使用する必要があります。

于 2009-03-12T06:09:43.807 に答える