实验环境:
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

在Visual Studio 2010 Pro环境下,一个包含静态数据成员的C++程序在未对静态数据成员赋初值时,会导致编译失败,出现LNK2001和LNK1120错误。解决方法是对静态数据成员进行初始化,初始化后程序能成功编译并生成可执行文件。
最低0.47元/天 解锁文章
1284

被折叠的 条评论
为什么被折叠?



