C ++如何将参数传递给嵌套函数?

问题描述 投票:2回答:2

假设我有一个简单的C ++程序。

Function_C()
{
    /*pass;*/
}
Function_B()
{
    Function_C();
}
Function_A()
{
    Function_B();
}
int main()
{
    int x,y;
    std::cin >> x >> y;
    Function_A();
}

问题是:如果我想在x中使用输入yFunction_C(比如做比较),我需要将xy传递给Function_A然后传递给Function_B,最后传递给Function_C,这使我将参数添加到Function_AFunction_B只是因为Function_C。这似乎是坏代码:(

那么,善良的堆栈溢出,谁能提供更好的主意?

c++ function
2个回答
6
投票

这不一定是坏代码 - 甚至有一个名称,它在某种程度上使模式合法化:从上面参数化。 (Acknowledge @Paul Evans)。它优于使用全局变量。

面向对象的编程可以避免这种情况。基于配方的解决方案

struct Foo
{
    int x;
    int y;
    void Function_C(){/*use x and y*/}
    void Function_B(){Function_C();}
    void Function_A(){Function_B();}
};

int main(){
    int x,y;
    std::cin >> x >> y;
    Foo f{x, y};
    f.Function_A();
}

可能会扩大更好。


4
投票

这可能就是你想要做的,这是一种从上面称为参数化的模式。肯定给xy全球范围是你想要避免的。

© www.soinside.com 2019 - 2024. All rights reserved.