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;
相关推荐
qq_41601872几秒前
C++与机器学习框架
开发语言·c++·算法
jyan_敬言26 分钟前
【算法】高精度算法(加减乘除)
c语言·开发语言·c++·笔记·算法
旖-旎35 分钟前
前缀和(矩阵区域和)(8)
c++·算法·leetcode·前缀和·动态规划
Vect__37 分钟前
基于CSAPP深刻理解编译链接过程
linux·c++
liuyao_xianhui1 小时前
优选算法_翻转链表_头插法_C++
开发语言·数据结构·c++·算法·leetcode·链表·动态规划
福昕办公1 小时前
C++ 无原生 JSON 支持?一文实现通用序列化与反序列化封装方案
c++
JAVA+C语言1 小时前
C++ STL map 系列全方位解析
开发语言·c++
cpp_25012 小时前
P1796 汤姆斯的天堂梦
数据结构·c++·算法·题解·洛谷·线性dp
Lisssaa2 小时前
打卡第二十六天
c++
4ever.ov02 小时前
定时器/时间轮
开发语言·c++·c·muduo·llinux