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;
相关推荐
zmzb010313 小时前
C++课后习题训练记录Day56
开发语言·c++
编程小Y13 小时前
C++ Insights
开发语言·c++
王老师青少年编程14 小时前
csp信奥赛C++标准模板库STL案例应用5
c++·stl·set·集合·标准模板库·csp·信奥赛
历程里程碑14 小时前
hot 206
java·开发语言·数据结构·c++·python·算法·排序算法
Tipriest_14 小时前
C++ 的 ranges 和 Python 的 bisect 在二分查找中的应用与实现
c++·python·算法·二分法
誰能久伴不乏15 小时前
epoll 学习踩坑:`fcntl` 设置非阻塞到底用 `F_SETFL` 还是 `F_SETFD`?
linux·服务器·网络·c++·tcp/ip
杨忆15 小时前
构建自己的开发工作台MFC
数据库·c++·mfc
wadesir16 小时前
C++非对称加密实战指南(从零开始掌握RSA加密算法)
开发语言·c++
七禾页丫16 小时前
面试记录12 软件(c++)工程师
c++·面试·职场和发展
酷酷的佳16 小时前
C语言--数组作为函数参数
c++