静态数据成员必须赋初值
2011-08-18 15:03
134 查看
实验环境:
OS: Window 7
IDE: Visual Studio 2010 Pro
以下代码虽然没有语法错误,但无法通过编译。
编译结果如下:
1>------ 已启动生成: 项目: Hello World, 配置: Debug Win32 ------
1>生成启动时间为 2011/8/18 14:57:03。
1>InitializeBuildStatus:
1> 正在对“Debug\Hello World.unsuccessfulbuild”执行 Touch 任务。
1>ClCompile:
1> main.cpp
1>ManifestResourceCompile:
1> 所有输出均为最新。
1>main.obj : error LNK2001: 无法解析的外部符号 "private: static int C::x" (?x@C@@0HA)
1>E:\Hello World\Debug\Hello World.exe : fatal error LNK1120: 1 个无法解析的外部命令
1>
1>生成失败。
1>
1>已用时间 00:00:01.04
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
对静态数据成员赋初值后可顺利通过编译。
编译结果:
1>------ 已启动生成: 项目: Hello World, 配置: Debug Win32 ------
1>生成启动时间为 2011/8/18 15:03:06。
1>InitializeBuildStatus:
1> 正在对“Debug\Hello World.unsuccessfulbuild”执行 Touch 任务。
1>ClCompile:
1> main.cpp
1>ManifestResourceCompile:
1> 所有输出均为最新。
1>Manifest:
1> 所有输出均为最新。
1>LinkEmbedManifest:
1> 所有输出均为最新。
1> Hello World.vcxproj -> E:\Hello World\Debug\Hello World.exe
1>FinalizeBuildStatus:
1> 正在删除文件“Debug\Hello World.unsuccessfulbuild”。
1> 正在对“Debug\Hello World.lastbuildstate”执行 Touch 任务。
1>
1>生成成功。
1>
1>已用时间 00:00:01.13
========== 生成: 成功 1 个,失败 0 个,最新 0 个,跳过 0 个 ==========
OS: Window 7
IDE: Visual Studio 2010 Pro
以下代码虽然没有语法错误,但无法通过编译。
#include <iostream> using namespace std; class C { public: void f() { cout << ++x <<endl; } private: static int x; }; int main() { C c0; c0.f(); system( "pause" ); return 0; }
编译结果如下:
1>------ 已启动生成: 项目: Hello World, 配置: Debug Win32 ------
1>生成启动时间为 2011/8/18 14:57:03。
1>InitializeBuildStatus:
1> 正在对“Debug\Hello World.unsuccessfulbuild”执行 Touch 任务。
1>ClCompile:
1> main.cpp
1>ManifestResourceCompile:
1> 所有输出均为最新。
1>main.obj : error LNK2001: 无法解析的外部符号 "private: static int C::x" (?x@C@@0HA)
1>E:\Hello World\Debug\Hello World.exe : fatal error LNK1120: 1 个无法解析的外部命令
1>
1>生成失败。
1>
1>已用时间 00:00:01.04
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
对静态数据成员赋初值后可顺利通过编译。
#include <iostream> using namespace std; class C { public: void f() { cout << ++x <<endl; } private: static int x; }; int C::x = 0; // initialize class member x int main() { C c0; c0.f(); system( "pause" ); return 0; }
编译结果:
1>------ 已启动生成: 项目: Hello World, 配置: Debug Win32 ------
1>生成启动时间为 2011/8/18 15:03:06。
1>InitializeBuildStatus:
1> 正在对“Debug\Hello World.unsuccessfulbuild”执行 Touch 任务。
1>ClCompile:
1> main.cpp
1>ManifestResourceCompile:
1> 所有输出均为最新。
1>Manifest:
1> 所有输出均为最新。
1>LinkEmbedManifest:
1> 所有输出均为最新。
1> Hello World.vcxproj -> E:\Hello World\Debug\Hello World.exe
1>FinalizeBuildStatus:
1> 正在删除文件“Debug\Hello World.unsuccessfulbuild”。
1> 正在对“Debug\Hello World.lastbuildstate”执行 Touch 任务。
1>
1>生成成功。
1>
1>已用时间 00:00:01.13
========== 生成: 成功 1 个,失败 0 个,最新 0 个,跳过 0 个 ==========
相关文章推荐
- 静态函数 静态数据成员与静态成员函数 为什么虚函数必须是非静态成员函数 构造函数能为static吗?
- 类的静态数据成员在 类内只能声明,定义和初始化必须在类外
- 类的静态数据成员在 类内只能声明,定义和初始化必须在类外
- main()方法为啥必须要public static void类型的??java中的静态成员
- C++静态成员函数和静态数据成员
- 静态数据成员
- 类的静态(数据和函数)成员[C++Primer]
- 错误 2 error C2491:xx: 不允许 dllimport 静态数据成员 的定义
- C++实例 静态成员的引入——静态数据成员的定义、调用,静态成员函数的实现、调用。
- 第七周任务一之类中静态数据成员及成员函数(改进篇)
- 《第七周任务一》含有静态数据成员和成员函数的Time类,类中所有的对象共有的数据
- 静态数据成员与静态成员函数
- C++的静态数据成员
- 静态数据成员的应用
- 静态数据成员的初始化 程序改错
- 指针指向类的静态数据成员
- 编写设计一个People(人)类。该类的数据成员有年龄(age)、身高(height)、体重(weight)和人数(num),其中人数为静态数据成员,成员函数有构造函数(People)、进食(Eatt
- Java序列化时,静态的成员变量 "可以被拿到数据" 是因为 类加载器之前就把这个类加载好了,拿到的是加载好的数据
- c# static 静态数据成员
- Java 中,为什么在静态方法中可以调用的方法、可以使用的成员变量必须是静态的?