Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/146.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 函数c++;_C++_Oop_Class_Recursion - Fatal编程技术网

C++ 函数c++;

C++ 函数c++;,c++,oop,class,recursion,C++,Oop,Class,Recursion,假设我有一个包装器函数,它围绕一些较小的递归函数运行。但是,包装器在调用递归函数之前会创建递归函数使用的对象。如何在C++中实现这一点?我只需要让它成为自己的班级吗?编辑-我知道我是否可以把它做成一门课,以及如何从中吸取教训-但我的问题是我是否需要一门课,或者我是否可以不做一门课就逃跑 我举了一个一般性的例子来澄清我的问题: void wrapper() { Object myObject; bool recurFun(int x) { // do som

假设我有一个包装器函数,它围绕一些较小的递归函数运行。但是,包装器在调用递归函数之前会创建递归函数使用的对象。如何在C++中实现这一点?我只需要让它成为自己的班级吗?编辑-我知道我是否可以把它做成一门课,以及如何从中吸取教训-但我的问题是我是否需要一门课,或者我是否可以不做一门课就逃跑

我举了一个一般性的例子来澄清我的问题:

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

请忽略任何基本的语法类型错误,这不是一个工作示例,只是为了帮助你们理解我的问题。谢谢

您可以使用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}
    }
}
void包装器()
{
对象对象对象;
std::函数recurFun;
recurFun=[&](int x)->bool{
//用myObject做一些事情
if(某些条件){return recurFun(x-1)}
else{return true}
}
}

您可以使用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}
    }
}
void包装器()
{
对象对象对象;
std::函数recurFun;
recurFun=[&](int x)->bool{
//用myObject做一些事情
if(某些条件){return recurFun(x-1)}
else{return true}
}
}

当函数需要使用某些东西时,首先想到的是将其作为该函数的参数。因此,让您的递归函数接受对象作为参数,并在递归调用中遍历它。包装器函数将完成设置对象并传递对象的自然任务。

当函数需要使用某个对象时,您首先想到的是将其作为该函数的参数。因此,让您的递归函数接受对象作为参数,并在递归调用中遍历它。包装器函数将自然地设置对象并传递它。

如果您提供的代码有效,您的问题在哪里?如果您提供的代码不起作用,它以什么方式表现出与您预期的不同?不,它不需要自己的类。我知道如果我创建了一个类,我可以让它起作用,但我真的不想知道是否有更简单的方法(没有类)。全局对象,或通过参数传递它。如果您提供的代码起作用,你的问题在哪里?如果您提供的代码不起作用,它以什么方式表现出与您预期的不同?不,它不需要自己的类。我知道如果我创建了一个类,我可以让它起作用,但我真的不想知道是否有更简单的方法(没有类)。全局对象,或者通过参数传递它。看起来你在这个答案上击败了我:)如果允许帮我一个忙就好了。太好了-正是我在寻找的。看起来你在这个答案上击败了我:)如果允许帮我一个忙就好了。太好了-正是我在寻找的。