class Node{}; class Tree { public: Node * root; void dps(Node * t,void (Tree::*work)(Node * n)){ (this->*work)(t); }; void work1(Node*n){}; }; void foo() { Node n; Tree t; t.dps(&n, &Tree::work1); } 当然也可以用一个静态函数,然后多接受一个 `Tree*` 的参数,把 `this` 通过这个参数穿进去: class Node{}; class Tree { public: Node * root; void dps(Node * t,void (*work)(Tree*, Node*)){ work(this, t); }; static void work1(Tree*t,Node*n){}; }; void foo() { Node n; Tree t; t.dps(&n, &Tree::work1); }