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;
相关推荐
朔北之忘 Clancy19 分钟前
2026 年 3 月青少年软编等考 C/C++ 一级真题解析
c语言·开发语言·c++·青少年编程·题解·考级
小成2023032026534 分钟前
C++~01面向对象基础
开发语言·c++
郝学胜-神的一滴1 小时前
干货版《算法导论》07:递归视角下的选择排序与归并排序
java·数据结构·c++·python·程序人生·算法·排序算法
暖焰核心2 小时前
C++内存管理和模板初阶
开发语言·c++
Irissgwe2 小时前
c++智能指针
开发语言·c++
西梅汁2 小时前
C++ 线程间通信(一)
c++
hautcyh3 小时前
C++new和delete
c++
不会C语言的男孩3 小时前
C++ Primer Plus 第10章:对象和类
开发语言·c++
不会C语言的男孩3 小时前
C++ Primer Plus 第11章:使用类
开发语言·c++
comedate4 小时前
FMT_UNICODE 与 CUDA 编码配置专栏技术文档
c++·utf-8·nvcc