【发布时间】:2025-12-02 10:05:03
【问题描述】:
我有一个带有静态成员的类,每个循环都会重置为零,所以类似于:
class Stats
{
static inline int counter1, counter2;
static inline float time;
static void resetStats()
{
counter1 = 0;
counter2 = 0;
time = 0.f;
}
}
使用非静态类,我可以创建一个零初始化的新对象并复制到我想要重置其值的对象。如果可能的话,我只需要记住,对于我在其中创建的每个成员,我还将它添加到“resetStats()”函数中。
【问题讨论】:
-
如果每次循环迭代都需要将这些变量重置为零,为什么不在循环中声明您需要的变量并将它们设置为零?
-
@JohnFilleau 是的,只有静态成员。有人告诉我,如果它没有被实例化,那么静态类或命名空间在概念上会更好。在这种情况下,如果将所有成员归零更容易,我可以将其设为非静态类
-
@Zebrafish 如果成员不是静态的,您可以在重置函数中执行
*this = Stats{}之类的操作。但也可以考虑在 for 循环中简单地创建整个变量,而不是在每次循环迭代时重置它。