C++ C+中的消息传递+;功能

C++ C+中的消息传递+;功能,c++,function,message,C++,Function,Message,我试着使用一个函数(我们称之为“循环”),除其他外,它负责增加一个变量,该变量表示自启动以来我的程序执行的迭代次数(这是FDTD模拟)。我需要在程序中的另一个函数中使用此迭代器变量进行决策,例如,如果完成了一定数量的迭代,则执行某些操作 我知道如何通过引用将一个变量从main传递到一个函数中,但我不知道如何使用另一个也从main调用的函数来检查这个变量的值 这使我想到以下问题: 如果我通过引用将变量传递给这两个函数,那么这两个函数是否始终都具有该变量的最新副本 如果我使用在main之外定义的全局

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

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

这使我想到以下问题:

  • 如果我通过引用将变量传递给这两个函数,那么这两个函数是否始终都具有该变量的最新副本

  • 如果我使用在main之外定义的全局变量(我知道这是一种糟糕的做法),函数可以修改该变量的值吗?如果它需要通过引用传递到函数中,如何实现

  • 是否有其他方法来维护两个或多个不涉及上述方法之一的函数可用的同步、正确的变量值

  • 如果我通过引用将变量传递给这两个函数,那么这两个函数是否始终都具有该变量的最新副本

    它们将引用相同的变量,因此,是的。当一个修改变量时,另一个将能够读取新的“synchronized”值

    如果我使用在main之外定义的全局变量(我知道这是一种糟糕的做法),函数可以修改该变量的值吗

    是的,但不要使用全局变量

    如果它需要通过引用传递到函数中,如何实现

    它与接收函数输入作为参考一样简单:

    void func(int&); // example
    //           ^  
    
    是否有其他方法来维护两个或多个不涉及上述方法之一的函数可用的同步、正确的变量值

    最好改为使用类,这样还可以保护同步变量不受外部编辑:

    class your_class {
    private:
        T synchronized;
    public:
        void func_one();
        void func_two();
    };
    
    但这实际上取决于你真正想要完成什么

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

    是的,您可以在两个不同的函数中访问相同的变量。main()按顺序调用这两个函数。如果您的工作是用于模拟,则在您的情况下可能不需要全局

    main()
    {
    int cnt;
    loop(int &cnt)
    action(int &cnt)
    }
    

    您可以通过全局变量实现同样的效果。

    您能详细说明一下在类中使用私有变量和公共变量的有用性吗?我并不是一个编程新手,但到目前为止,我已经接受了在科学应用中使用函数式编程风格的培训,所以这对我来说是一个陌生的领域。@Scott,类的
    公共部分是它的接口(你想从类的外部调用和使用它);
    private
    部分是它的实现,即类的用户不需要知道的内容。