有没有一种快速的方法可以让一个类的所有静态成员归零?

问题描述 投票:3回答:1

我有一个带有静态成员的类,每次循环都会被重置为零,所以类似于。

class Stats
{
   static inline int counter1, counter2;
   static inline float time;
   static void resetStats() 
   {
       counter1 = 0;
       counter2 = 0;
       time = 0.f;
   }
}

对于一个非静态的类,我可以创建一个新的零初始化对象 然后复制到我想要重置值的对象上 如果可以的话,我只需要记住,我在其中创建的每一个成员,我也把它添加到 "resetStats() "函数中。

c++ class static
1个回答
3
投票

让变量成为一个类的非静态成员,并使用该类的静态实例。这样你就可以使用值初始化来将所有成员设置为零。

class Stats
{
    static inline struct {
        int counter1, counter2;
        float time;
    } data;

    static void resetStats() 
    {
        data = {};
    }

也就是说,静态变量是全局状态。应该避免使用全局状态。

每次循环都会被重置为零

这听起来像是非静态存储的理想用例。

© www.soinside.com 2019 - 2024. All rights reserved.