オブジェクトのベクトルがあるとします。ベクター内の各要素について、メンバーを介して関数を呼び出したいと思います。コードは次のように示すことができます。
class CMyClass
{
public:
void g();
};
class CAnotherClass
{
public:
void f();
CMyClass m_object;
};
std::vector<CAnotherClass> vec;
// This is easy. What about m_object->g()?
std::for_each(vec.begin(), vec.end(), std::mem_fn(&CAnotherClass::f));
各オブジェクトの呼び出しf()
は、上記のように簡単です。m_object->g()
各オブジェクトを呼び出したい場合はどうすればよいですか? CAnotherClass
うまくいけば、 のインターフェースを変更して、を呼び出すだけのダミー関数を追加したくありませんm_object->g()
。
ループを自分で作成せずに STL/ブーストする方法はありますか?