1

假设我有一个围绕一些较小的递归函数的包装函数。但是,包装器在调用递归函数之前会创建递归函数使用的对象。我怎样才能在 C++ 中做到这一点?我只需要让它成为自己的课程吗?编辑-我知道我是否可以进入课程以及如何从那里上课-但我的问题是我需要上课还是可以不上课就以某种方式逃脱?

我做了一个通用的例子来澄清我的问题:

void wrapper()
{
    Object myObject;
    bool recurFun(int x)
    {
        // do some stuff with myObject
        if (some condition){return recurFun(x-1)}
        else {return true}
    }
}

请忽略任何基本的语法类型错误,这不是一个工作示例,只是一个帮助将我的问题传达给你们的示例。谢谢!

4

2 回答 2

14

您可以使用 lambdas 来获取闭包:

void wrapper()
{
    Object myObject;
    std::function<bool(int)> recurFun;
    recurFun = [&](int x) -> bool {
        // do some stuff with myObject
        if (some condition){return recurFun(x-1)}
        else {return true}
    }
}
于 2013-04-26T23:56:45.530 回答
2

当一个函数需要使用某些东西时,您首先应该想到的是让它成为该函数的参数。因此,让您的递归函数接受该对象作为参数,并在递归调用中将其线程化。包装函数将自然地设置对象并传递它。

于 2013-04-27T00:01:33.160 回答