我正在尝试使用一个函数(让我们称之为“循环”),除其他外,它负责递增一个变量,该变量表示我的程序自启动以来执行的迭代次数(这是一个 FDTD 模拟) .我需要在程序的另一个函数中使用此迭代器变量进行决策,例如,在完成一定数量的迭代后执行某些操作。
我知道如何通过引用将变量从 main 传递到函数,但我不知道如何使用另一个也从 main 调用的函数检查此变量的值。
这引出了以下问题:
如果我通过引用将变量传递给两个函数,那么它们是否始终拥有该变量的最新拷贝?
如果我使用在 main 之外定义的全局变量(我知道这是不好的做法),函数可以修改该变量的值吗?如果它需要通过引用传递给函数,该怎么做?
是否有一些其他方法可以保持同步、正确的变量值可供两个或多个不涉及上述方法之一的函数使用?
最佳答案
If I pass the variable by reference into both functions, will both have the most recent copy of the variable at all times?
它们将引用相同的变量,因此,是的。当一个修改变量时,另一个将能够读取新的“同步”值。
If I use a global variable defined outside of main (I know this is bad practice), can a function modify the value of that variable?
是的,但不要使用全局变量。
If it requires passing by reference into a function, how can this be done?
它就像接收函数的输入一样简单:
void func(int&); // example
// ^
Is there some other way to maintain a synchronized, correct variable value available to two or more functions that doesn't involve one of the above methods?
改用类可能是个更好的主意,这样您还可以保护您的同步变量免受外部编辑:
class your_class {
private:
T synchronized;
public:
void func_one();
void func_two();
};
但这实际上取决于您实际想要完成的任务。
关于c++ - C++ 函数中的消息传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21010064/