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;
相关推荐
啊我不会诶5 分钟前
2024ICPC西安邀请赛补题
c++·算法
ZenosDoron6 分钟前
keil软件修改字体,Asm editor,和C/C++ editor的区别
c语言·开发语言·c++
山栀shanzhi27 分钟前
C/C++之:构造函数为什么不能设置为虚函数?
开发语言·c++·面试
谭欣辰34 分钟前
C++ 版Dijkstra 算法详解
c++·算法·图论
qeen871 小时前
【算法笔记】双指针及其经典例题解析
c++·笔记·算法·双指针
王老师青少年编程3 小时前
csp信奥赛C++高频考点专项训练之贪心算法 --【区间贪心】:雷达安装
c++·算法·贪心·csp·信奥赛·区间贪心·雷达安装
elseif1233 小时前
分组背包1
c++·学习·算法
Rabitebla3 小时前
【数据结构】动态顺序表实现详解:从原理到接口设计(面试视角)
c语言·开发语言·数据结构·c++·面试·职场和发展
小明同学013 小时前
[C++入门]万字长文梳理 C++11 核心特性
c++
郝学胜-神的一滴3 小时前
Linux 高并发基石:epoll 核心原理 + LT/ET 触发模式深度剖析
linux·运维·服务器·开发语言·c++·网络协议