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;
相关推荐
梁下轻语的秋缘1 分钟前
用 LoRa + W5500 做一个无线呼叫器
c语言·c++
YoungHong19923 分钟前
C++ 硬核基础:为什么函数重载不能只看返回值?
开发语言·c++
我不会插花弄玉7 分钟前
vector【由浅入深-C++】
c++
兵哥工控9 分钟前
mfc静态文本控件背景及字体颜色设置实例
c++·mfc
hqzing12 分钟前
C语言程序调用syscall的几种方式
linux·c++
迟熙18 分钟前
你的return,真的return对了吗?
c++
superman超哥21 分钟前
仓颉内存分配优化深度解析
c语言·开发语言·c++·python·仓颉
2401_8414956424 分钟前
并行程序设计与实现
c++·python·算法·cuda·mpi·并行计算·openmp
chenyuhao202433 分钟前
Linux系统编程:多线程同步与单例模式
linux·服务器·c++·后端·单例模式
曼巴UE537 分钟前
UE C++ FName, FText 测试
服务器·c++·ue5