我在课堂上有一个静态变量.
我正在初始化它在全球范围内,它的工作正常.
我正在初始化它在全球范围内,它的工作正常.
class Myclass{ static int iCount; } ; int main(){ int Myclass::iCount=1; }
在全局范围内,为什么我必须指定变量类型
喜欢
int Myclass::iCount=1;
在我的课堂上,我将iCount定义为整数类型,为什么不呢.
Myclass::iCount =1 ; in //Global scope
解决方法
C标准的第9.4.2 / 7节说,
Static data members are initialized
and destroyed exactly like non-local
objects (3.6.2,3.6.3).
注意短语“初始化”和“完全像非本地对象”.希望这能解释为什么你不能这样做.
实际上,静态成员更像是通过Myclass :: iCount访问的全局对象.因此,您需要在全局范围(与定义类相同的范围)初始化它们,如下所示:
class Myclass{ static int iCount; } ; int Myclass::iCount=1; int main(){ /*** use Myclass::iCount here ****/ }
类似主题: