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;
相关推荐
FuckPatience2 小时前
C++ 常用类型写法和全称
开发语言·c++
__BMGT()3 小时前
参考文章资源记录
开发语言·c++·qt
ouliten3 小时前
C++笔记:std::string_view
开发语言·c++·笔记
玫瑰花店3 小时前
万字C++中锁机制和内存序详解
开发语言·c++·算法
D_evil__4 小时前
[C++高频精进] 文件IO:文件流
c++
西幻凌云4 小时前
认识STL序列式容器——List
开发语言·c++·stl·list·序列式容器
Elias不吃糖5 小时前
LeetCode每日一练(209, 167)
数据结构·c++·算法·leetcode
Want5955 小时前
C/C++跳动的爱心②
c语言·开发语言·c++
初晴や5 小时前
指针函数:从入门到精通
开发语言·c++
铁手飞鹰5 小时前
单链表(C语言,手撕)
数据结构·c++·算法·c·单链表