C++静态成员变量需要在类外进行定义和初始化-error LNK2001:无法解析的外部符号

现象

在一个类的头文件中,定义了一个static类型的类变量,直接编译,会报错。

例如,在IX.h中定义一个静态的Iy变量,如下:

c 复制代码
class Ix
{
public:
	static Iy* y;
}

编译时会报错,提示如下:

复制代码
Ix.obj : error LNK2001: 无法解析的外部符号 "public: static class Iy * Ix::y" (?y@Ix@@2PAVIy@@A)

分析

原因是,在C++中,静态成员变量需要在类外进行定义和初始化。

解决方法

在Ix.cpp中初始化:

c 复制代码
Iy* Ix::y = NULL;
相关推荐
yuuki23323310 分钟前
【C++】类和对象下
数据结构·c++·算法
小尧嵌入式24 分钟前
Linux的shell命令
linux·运维·服务器·数据库·c++·windows·算法
hd51cc28 分钟前
MFC消息处理机制
c++·mfc
兵哥工控31 分钟前
MFC使用串口类通讯实例
c++·mfc·串口通讯·串口类
承渊政道37 分钟前
C++学习之旅【实战全面解析C++类和对象】
c++·笔记·学习
懂AI的老郑40 分钟前
深入理解C++中的堆栈:从数据结构到应用实践
java·数据结构·c++
胡萝卜3.041 分钟前
现代C++特性深度探索:模板扩展、类增强、STL更新与Lambda表达式
服务器·开发语言·前端·c++·人工智能·lambda·移动构造和移动赋值
晚风(●•σ )44 分钟前
C++语言程序设计——12 排序算法-桶排序
c++·算法·排序算法
淀粉肠kk1 小时前
【数据结构】哈希表
数据结构·c++
郝学胜-神的一滴1 小时前
Linux C++会话编程:从基础到实践
linux·运维·服务器·开发语言·c++·程序人生·性能优化