方法1.
std::bind と std::function を使う

//test.h
template < class T > class test {
public:
  class iterator {
  public:void yobidashi( std::function<void ( T&, iterator )> function ){}
  }
}

//hoge.h
#include <test.h>
struct aaa {
  ・・・
}
typedef test<aaa> testaaa;

//test2.h(実際はヘッダとソース分けてます)
#include <hoge.h>
class test2 {
private:
  void func( aaa& a, iterator ite ) {}
public:
  void zikkou(){
    testaaa::iterator ite;
    using namespace std::placeholders;
    ite.yobidashi(std::bind(func, _1, _2));
  }
}

方法2. void func( aaa& a, iterator ite ) {} -> static void func( aaa& a, iterator ite ) {} に変更