C++ 有没有一种快速的方法将类的所有静态成员归零?

C++ 有没有一种快速的方法将类的所有静态成员归零?,c++,class,static,C++,Class,Static,我有一个类,它的静态成员在每个循环中都被重置为零,所以类似于: class Stats { static inline int counter1, counter2; static inline float time; static void resetStats() { counter1 = 0; counter2 = 0; time = 0.f; } } 使用非静态类,我可以在零初始化的情况下创建它的新对象,并复制到

我有一个类,它的静态成员在每个循环中都被重置为零,所以类似于:

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

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

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

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

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

也就是说,静态变量是全局状态。应避免戈壁状态

每个循环都会被重置为零


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

如果这些变量需要在每次循环迭代中重置为零,为什么不在循环中声明所需的变量并将其设置为零?@JohnFilleau Yes仅限静态成员。有人告诉我,如果它没有实例化,那么静态类或名称空间在概念上会更好。在这种情况下,如果把所有成员归零容易得多,我可以使它成为非静态的class@Zebrafish如果成员不是静态的,您可以在reset函数中执行类似于
*this=Stats{}
的操作。但也可以考虑在整个for循环中创建整个变量,而不是在每个循环迭代中重置它。我应该避免全局状态的意思,但是如果我需要在整个程序中从不同的函数(测量时间等)对这些变量进行写入,那么我该怎么办呢?没有足够的细节来设计解决方案。