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;
相关推荐
diediedei8 分钟前
C++中的适配器模式变体
开发语言·c++·算法
天赐学c语言21 分钟前
1.25 - 零钱兑换 && 理解右值以及move的作用
c++·算法·leecode
北冥湖畔的燕雀24 分钟前
C++智能指针:告别内存泄漏的利器
c++·算法
CSDN_RTKLIB24 分钟前
【编码实战】源字符集设置
c++
安全二次方security²28 分钟前
CUDA C++编程指南(7.5&6)——C++语言扩展之内存栅栏函数和同步函数
c++·人工智能·nvidia·cuda·内存栅栏函数·同步函数·syncthreads
D_evil__1 小时前
【Effective Modern C++】第三章 转向现代C++:10. 优先选用限域枚举,而非不限域枚举
c++
是娇娇公主~1 小时前
算法——【最长回文子串】
c++·算法
你撅嘴真丑1 小时前
计算2的N次方 和 大整数的因子
数据结构·c++·算法
孞㐑¥1 小时前
算法—前缀和
c++·经验分享·笔记·算法
CSDN_RTKLIB1 小时前
【编码实战】编译器解码编码过程
c++