c++ - C++ 函数中的消息传递

标签 c++ function message

我正在尝试使用一个函数(让我们称之为“循环”),除其他外,它负责递增一个变量,该变量表示我的程序自启动以来执行的迭代次数(这是一个 FDTD 模拟) .我需要在程序的另一个函数中使用此迭代器变量进行决策,例如,在完成一定数量的迭代后执行某些操作。

我知道如何通过引用将变量从 main 传递到函数,但我不知道如何使用另一个也从 main 调用的函数检查此变量的值。

这引出了以下问题:

  1. 如果我通过引用将变量传递给两个函数,那么它们是否始终拥有该变量的最新拷贝?

  2. 如果我使用在 main 之外定义的全局变量(我知道这是不好的做法),函数可以修改该变量的值吗?如果它需要通过引用传递给函数,该怎么做?

  3. 是否有一些其他方法可以保持同步、正确的变量值可供两个或多个不涉及上述方法之一的函数使用?

最佳答案

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/

相关文章:

c++ - 为什么我们在 C++ 中使用返回数据结构的函数?

grails - 闪存消息grails

wcf - WCF检查邮件

c++ - 在编译时获取给定索引处的 std::variant 成员的类型

c++ - std::is_constant_evaluated 时如何获取常量表达式?

javascript - 为什么 <br> 没有添加到错误消息中?

structure - 如何捕获整个 RabbitMQ 消息(包括 header )的原始文本

c++ - 三角函数计算源代码

c++ - 指向对象数组的指针的初始化

c - 覆盖 C 中的函数调用