c – 在main中初始化静态类变量

我在课堂上有一个静态变量.
我正在初始化它在全球范围内,它的工作正常.


当我尝试在主链接器中初始化时抛出错误.
为什么这样.

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 ****/
}

类似主题

How do static member variables affect object size?

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...