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

时间:2020-05-14 16:30:54

标签: c++ class static

我有一个带有静态成员的类,每个循环将其重置为零,所以类似:

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

对于非静态类,我可以使用零初始化创建它的新对象,并将其复制到要重置其值的对象。如果可能,我只需要记住,对于在其中创建的每个成员,我也将其添加到“ resetStats()”函数中。

1 个答案:

答案 0 :(得分:3)

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

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

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

也就是说,静态变量是全局状态。应该避免处于全球状态。

每个循环都重置为零

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