首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C++里静态数据成员必须在文件范围内初始化?请给小弟我讲讲原因

2012-03-26 
C++里静态数据成员必须在文件范围内初始化?请给我讲讲原因?如题,在没有初始化的时候编译能通过,但是连接会

C++里静态数据成员必须在文件范围内初始化?请给我讲讲原因?
如题,
在没有初始化的时候编译能通过,但是连接会出错,错误提示找不到静态数据成员

[解决办法]
必须初始化啊,在那个文件都一样
[解决办法]
养成良好的习惯。

不然,楼主你想在哪里进行初始化?
[解决办法]
没原因,C++标准就这么规定的。
[解决办法]
这叫定义,类定义里的静态变量只是一个声明。如果一个符号没有定义,那么连接的时候自然要出错
[解决办法]
编译的时候好象头文件不参加编译。在我的印象里,连接的时候头文件才起作用呀。你查一下吧
[解决办法]
Linker Tools Error LNK2001

Language Filter: All Language Filter: Multiple Language Filter: Visual Basic Language Filter: C# Language Filter: C++ Language Filter: J# Language Filter: JScript
Visual Basic (Declaration)
Visual Basic (Usage)
C#
C++
J#
JScript

Error Message
unresolved external symbol "symbol "


Code references something (such as a function, variable, or label) that the linker can 't find in the libraries and object files.

This error message is followed by fatal error LNK1120.


-----------

如果类型的static 成员变量不初开始化,在编译生成obj的时候就不会生成相应符号

所以在连接的时候找不到


你可以在两中情况下分别编译,然后比较两个obj,就知道了


[解决办法]
既然是定义你还胶针干嘛?
就像宪法规定了,你和他试一试去啊
[解决办法]
只声明没定义,所以连接的时候会报错,静态变量必须要初始化!
[解决办法]
static成员变量不属于每一个具体的对象,而属于类本身
所以要初始化了

热点排行