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;
相关推荐
骁的小小站3 小时前
Verilator 和 GTKwave联合仿真
开发语言·c++·经验分享·笔记·学习·fpga开发
旭意6 小时前
C++蓝桥杯之结构体10.15
开发语言·c++
深思慎考7 小时前
调用百度云语音识别服务——实现c++接口识别语音
c++·语音识别·百度云
K 旺仔小馒头9 小时前
优选算法:01 双指针巧解移动零问题
c++·算法·刷题
AlexMercer101210 小时前
Ubuntu从零开始配置Git
c++·git·ubuntu·gitee
无敌最俊朗@11 小时前
C++ STL Deque 高频面试题与答案
开发语言·c++
和编程干到底11 小时前
C++基础
开发语言·c++
John.Lewis12 小时前
C++初阶(14)list
开发语言·c++·笔记
hsjkdhs13 小时前
C++文件操作
开发语言·c++
沐怡旸13 小时前
【穿越Effective C++】条款4:确定对象使用前已先被初始化——C++资源管理的基石
c++·面试