有的时候由于各种原因,想在函数的内部实现一个递归而不调用另外的函数。这里提供一个可能不是最优的解决办法(用Lambda或者auto可能也能实现?)
class Class {
void function(Struct *p) {
TYPE key = getKey(*p);
struct iteration {
bool operator()(Struct *p, TYPE &key) {
//递归函数函数体
if ()//递归结束条件
return true;
else
operator()(p, key);//递归调用
}
};
iteration IT;
IT(p, key);
}
};
以虚函数的形式实现,在函数体中定义一个结构体,然后重载该结构体的函数运算符(即“()”)。实例化即可当作函数使用。