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;
相关推荐
diediedei3 分钟前
嵌入式数据库C++集成
开发语言·c++·算法
君义_noip5 分钟前
洛谷 P3388 【模板】割点(割顶)
c++·算法·图论·信息学奥赛·csp-s
xie0510_6 分钟前
string模拟实现
开发语言·c++·算法
雪域迷影30 分钟前
C++17中使用inline修饰类的静态成员变量
开发语言·c++·inline static·类静态成员变量
星火开发设计30 分钟前
共用体 union:节省内存的特殊数据类型
java·开发语言·数据库·c++·算法·内存
「QT(C++)开发工程师」2 小时前
C++ 多种单例模式
java·c++·单例模式
五_谷_丰_登2 小时前
C++模板元编程学习——模板简介
c++·stl·c++标准库
2301_811232983 小时前
C++中的契约编程
开发语言·c++·算法
2401_829004023 小时前
C++中的访问者模式
开发语言·c++·算法