#include <list>
#include <algorithm>
class Abstract
{
//contains a pure virtual function
};
class Mock
{
public:
Mock();
~Mock()
{
std::for_each(m_abs_list.begin(), m_abs_list.end(), my_func);
}
void my_func(Abstract *ele){delete ele;}
private:
std::list <Abstract *> m_abs_list;
};
基本的に、私は各Abstract
オブジェクトのデストラクタを呼び出そうとしていm_abs_list
ます. for
これは、ループによって簡単に実現できます。しかし、私はfor_each
この文脈で使用しようとしています。
コンパイル時にエラーが発生します:
/usr/include/c++/4.2/bits/stl_algo.h: In function '_Function std::for_each(_InputIterator, _InputIterator, _Function) [with _InputIterator = std::_List_iterator<Abstract *>, _Function = void (Mock::*)(Abstract *)]'
/usr/include/c++/4.2/bits/stl_algo.h:159: error: must use '.*' or '->*' to call pointer-to-member function in '__f (...)'.
コンパイルエラーを回避するにはどうすればよいですか?