【发布时间】:2019-08-14 16:40:29
【问题描述】:
我是 CPP 的新手。
我需要添加可以从静态方法调用的静态成员。
所以在 .h 我声明它:
static uint32_t s_MyStaticMember;
在我的构造函数上方(在“命名空间”中)我初始化它:
uint32_t MyClassName::s_MyStaticMember;
现在我可以从我的静态方法中使用这个静态成员了。
问题是,如果我用 =0 初始化成员;
uint32_t MyClassName::s_MyStaticMember=0;"
类的下一次实例化会发生什么?
我认为它不会将静态成员重置为 0,因为这是初始化不在类中的原因,=0 将发生只发生一次。
我的假设正确吗?
【问题讨论】:
-
你只能实例化一次。再次尝试这样做是错误的。
-
@NathanOliver 问题是如果通过在全局中定义 =0;每次创建对象时都不会将现有实例的值设置为 0。这没有意义,我只是想验证一下
-
我是说你不能在
uint32_t MyClassName::s_MyStaticMember;后面跟着uint32_t MyClassName::s_MyStaticMember = 0;。那是重新定义,是不允许的。如果这不是您要问的,那么拥有minimal reproducible example 会很有帮助。 -
@NathanOliver 我不是要重新定义它,我的意思是修改代码中的行并重新编译,而不是成员;做成员= 1。以下答案是正确的,我的假设是正确的,谢谢帮助