我的代码中有一个函数类型:
double f (double x, double y){
...
int entry_1 = 0;
int entry_2 = 1;
...
}
entry_1
和 entry_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 = 7
和 entry_2 = 0
,因为它们在 f
函数内部发生了变化。
如果 entry_1
和 entry_2
是全局变量,现在我会这样做:
entry_1 = 0;
entry_2 = 1;
for (int i = 0; i<100; i++){
...
f_value = f(x*i-2, y_instance);
...
}
我认为将 entry_1
和 entry_2
设置为输入参数不是个好主意,因为我会被迫在 for 期间传递一些值
在主函数中循环。我希望 entry_1
和 entry_2
在 for
循环期间由 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/