想将函数指针作为参数调用,却发现必须是静态指针吗?
打个比方,我写了一个树类Tree,其中包含树的根节点.每个节点都记录了自己的儿子.
其中有一个dps函数,第一个参数是要遍历的节点,第二个参数是要对该节点做的事情.
class Tree
{
Node * root;
void dps(Node * t,void (*work)(Node * n));
void work1(Node*n);
void work2(Node*n);
void work3(Node*n);
//...
}
这么一个结构.
但我试图运行dps(root,work1)
的时候,我发现它要求work1必须是静态函数?
而如果我把work1设置成静态函数,它会很麻烦,因为它还使用了Tree类里的其他成员.
这种场合我该怎么做比较好?
当然也可以用一个静态函数,然后多接受一个
Tree*
的参数,把this
通过这个参数穿进去: