静态数据成员必须赋初值

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实验环境:

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 个无法解析的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值