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;
相关推荐
<但凡.30 分钟前
C++修炼:list模拟实现
开发语言·数据结构·c++
byte轻骑兵1 小时前
【C++类和数据抽象】复制构造函数
开发语言·c++
孞㐑¥1 小时前
C++之异常
开发语言·c++·经验分享·笔记
CoderCodingNo1 小时前
【GESP】C++三级练习 luogu-B2114 配对碱基链
开发语言·c++
敲代码的瓦龙1 小时前
C++?动态内存管理!!!
c语言·开发语言·数据结构·c++·后端
虾球xz1 小时前
游戏引擎学习第248天:清理数据块显示
c++·学习·游戏引擎
Ronin3051 小时前
【C++】13.list的模拟实现
开发语言·数据结构·c++·list
依旧阳光的老码农2 小时前
log4cpp 编译说明文档
c++
OpenC++2 小时前
【C++QT】Layout 布局管理控件详解
c++·经验分享·qt·leetcode
1白天的黑夜13 小时前
贪心算法-860.柠檬水找零-力扣(LeetCode)
c++·算法·leetcode·贪心算法