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 分钟前
【数据结构与算法】第42篇:并查集(Disjoint Set Union)
c语言·数据结构·c++·算法·链表·排序算法·深度优先
苕皮蓝牙土豆1 小时前
Qt图形视图框架入门:坐标系统与鼠标事件处理详解
c++·qt
众少成多积小致巨2 小时前
libbinder_ndk 入门指南
前端·c++·架构
历程里程碑2 小时前
二叉树---翻转二叉树
开发语言·c++·elasticsearch·链表·搜索引擎·tornado·dash
闻缺陷则喜何志丹2 小时前
【排序】P6149 [USACO20FEB] Triangles S|普及+
c++·算法·排序·洛谷
tankeven2 小时前
HJ178 【模板】双指针
c++·算法
charlie1145141913 小时前
嵌入式C++工程实践——第13篇:第一次重构 —— enum class取代宏,类型安全的开始
开发语言·c++·vscode·stm32·安全·重构·现代c++
CHANG_THE_WORLD3 小时前
C++ 文件读取函数完全指南
开发语言·c++
6Hzlia3 小时前
【Hot 100 刷题计划】 LeetCode 300. 最长递增子序列 | C++ 动态规划 & 贪心二分
c++·leetcode·动态规划
阿正的梦工坊3 小时前
JavaScript 闭包 × C++ 类比:彻底搞懂闭包
开发语言·javascript·c++