通过参数传递变量并稍后在类中对其进行修改

Posted

技术标签:

【中文标题】通过参数传递变量并稍后在类中对其进行修改【英文标题】:Passing a variable through parameters and modifying it later in the class 【发布时间】:2020-11-04 20:57:57 【问题描述】:

如何将变量存储在类中,并在以后的程序流程中对其进行修改?

例如:

bool bGlobalStatus = false;

class foo

public:

    foo()
    ~foo()

    void InitGlobalBool(bool &var)
    

        // I can change the value here, but I want to store the variable and modify it later.
        // var = !var;
    

    void Update()
    
        // this will be called in program flow ...
        var = !var; // this variable should be in my case bGlobalStatus, depends which variable I put inside the InitGlobalBool function 
    
;

int main()

   foo Foo;
   Foo.InitGlobalBool(bGlobalStatus); 
   return 0;

【问题讨论】:

为什么不使用成员变量? 您可以存储对该成员的引用,或者创建一个std::function 并存储它 因为不应该,所以需要分开。 创建一个指针bool *mVar;,然后在InitGlobalBool 中输入mVar = &var;,最后在Update 中执行类似*mVar = !(*mVar); 的操作。 @Ric 你应该把它作为答案发布:) 【参考方案1】:

我想你想做这样的事情:

bool bGlobalStatus = false;

class foo

public:
    bool *mVar;
    foo()
    ~foo()

    void InitGlobalBool(bool &var)
    

        mVar = &var;
    

    void Update()
    
        *mVar = !(*mVar);
    
;

int main()

   foo Foo;
   Foo.InitGlobalBool(bGlobalStatus); 
   return 0;

【讨论】:

以上是关于通过参数传递变量并稍后在类中对其进行修改的主要内容,如果未能解决你的问题,请参考以下文章

将“引用”作为函数参数有哪些特点?

SCSS中定义变量

值传递和引用传递

构造函数-用参数初始化表对成员变量初始化

构造函数-用参数初始化表对成员变量初始化

ASP.NET Core中间件计算Http请求时间