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;
相关推荐
Z1Jxxx1 小时前
01序列01序列
开发语言·c++·算法
坚定学代码2 小时前
基于观察者模式的ISO C++信号槽实现
开发语言·c++·观察者模式·ai
ha20428941943 小时前
Linux操作系统学习记录之---TcpSocket
linux·网络·c++·学习
AI视觉网奇4 小时前
ue5 插件 WebSocket
c++·ue5
左直拳4 小时前
将c++程序部署到docker
开发语言·c++·docker
恒者走天下4 小时前
AI智能体通讯项目(底层AI通讯协议实现)
c++
英雄各有见4 小时前
Chapter 5.1.1: 编写你的第一个GPU kernel——Cuda Basics
c++·gpu·cuda·hpc
梵尔纳多5 小时前
OpenGL着色器语言(GLSL)
c++·opengl·着色器
net3m335 小时前
单片机屏幕多级菜单系统之当前屏幕号+屏幕菜单当前深度 机制
c语言·c++·算法
mmz12075 小时前
二分查找(c++)
开发语言·c++·算法