C ++中的嵌套函数替代

时间:2011-07-29 04:24:41

标签: c++ function nested

我想创建一个函数f(),它使用三个值来计算其结果:a,b和e。 e取决于a和b,因此技术上f()只是a和b的函数。但是为了便于阅读,更容易看到包含抽象e的函数,而不是查看包含许多a和b的混乱公式。

有没有办法在不使用C ++不允许的嵌套函数的情况下使用e等因变量?

6 个答案:

答案 0 :(得分:4)

C ++确实有局部变量,这很容易:

double f(double const a, double const b)
{
    double const e = a * b + b * b * b;
    return a + b + e;
}

答案 1 :(得分:2)

你可以编写一个可以定义静态函数的本地结构,它可以像嵌套函数一样使用:

int f(int a, int b)
{
   struct local
   {
        static int f(int a, int b, int e)
        {
             return e * (a + b);
        }
   };
   return local::f(a,b, a*b);
}

答案 2 :(得分:2)

不确定我理解你的问题,但如果你只是想通过引入因变量来使你的函数更具可读性,为什么不在主函数调用的单独函数中计算该变量:

float CalculateE(float a, float b)
{
    return (a + b);
}

float f(float a, float b)
{
    float e = CalculateE(a, b);
    return a + b + e;
}

答案 3 :(得分:1)

出了什么问题:

int compute_e(int a, int b)
{
    return whatever;
}

int func(int a, int b)
{
    int e = compute_e(a, b);
}

答案 4 :(得分:1)

你可以这样做:

int f(int a, int b)
{
    struct LocalFunc
    {
        int operator()(int a, int b)
        {
            return a*b + b*b*b;
        }
    };
    LocalFunc e;
    return e(a,b)*a+b;
}

答案 5 :(得分:-1)

我认为你可以写一些笔记。

int FuncSum(int a, int b)
{
    //return the sum of a + b
    return a + b ;
}