gpt4 book ai didi

c++ - 在不使用全局变量的情况下从主范围更改函数中的局部变量

转载 作者:行者123 更新时间:2023-11-30 03:14:49 29 4
gpt4 key购买 nike

我的代码中有一个函数类型:

double f (double x, double y){
...
int entry_1 = 0;
int entry_2 = 1;
...
}

entry_1entry_2 的值将在函数 f 内部循环后发生变化。函数 f 将在主脚本中以相同的方式使用:

double f_value;
double y_instance = 0.5;
for (int i = 0; i<100; i++){
...
f_value = f(x*i, y_instance);
...
}

假设在这个循环之后,entry_1 = 7entry_2 = 0,因为它们在 f 函数内部发生了变化。

如果 entry_1entry_2 是全局变量,现在我会这样做:

entry_1 = 0;
entry_2 = 1;

for (int i = 0; i<100; i++){
...
f_value = f(x*i-2, y_instance);
...
}

我认为将 entry_1entry_2 设置为输入参数不是个好主意,因为我会被迫在 for 期间传递一些值 在主函数中循环。我希望 entry_1entry_2for 循环期间由 f 操作,并在这些循环之后重新初始化它们来自主函数。

最佳答案

您可以使用一个类,并使您的程序面向对象:

class Foo
{
public:
double f (double x, double y)
{
return x + y + entry_1; // for example.
}
void setEntry1(double value)
{
entry_1 = value;
}
private:
double entry_1 = 0;
double entry_2 = 1;
};

然后你可以这样使用它:

Foo object;
object.setEntry1(0.5);

double z = object.f(0.1, 0.2);
double z1 = object.f(0.2, 0.3);

这允许您让多个对象使用不同的 entry 值执行 f。并更改那些 entry 值。

关于c++ - 在不使用全局变量的情况下从主范围更改函数中的局部变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57465535/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com