先輩にstd::tr1::functionとstd::tr1::bindの使い方を教えてもらったのでめもめも。
#include <functional> #include <iostream> class classA { public: int neg(int n) { return -n; } }; class classB { private: std::tr1::function<int(int)> m_func; public: void set(classA* a) { m_func = std::tr1::bind(&classA::neg, a, std::tr1::placeholders::_1); } int call(int n) { if (m_func) return m_func(n); else return n; } }; void main() { classA a; classB b; b.set(&a); std::cout << b.call(100) << std::endl; }