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;
相关推荐
@卞25 分钟前
ST 表相关练习题
数据结构·c++·算法
报错小能手28 分钟前
C++笔记 bind函数模板
开发语言·c++·笔记
Vanranrr40 分钟前
表驱动编程实战:让 UI 逻辑既清晰又好维护
c++·ui
Vanranrr41 分钟前
车机项目中的 Widget 设计反思:从“能用”到“好用”的改进方向
c语言·c++·架构
2501_941111521 小时前
C++中的适配器模式
开发语言·c++·算法
2501_941111941 小时前
C++中的适配器模式变体
开发语言·c++·算法
2501_941111771 小时前
C++代码移植性设计
开发语言·c++·算法
yy_xzz2 小时前
【OpenCV + VS】C++实现动态下雪特效
c++·人工智能·opencv
橘子真甜~2 小时前
C/C++ Linux网络编程5 - 网络IO模型与select解决客户端并发连接问题
linux·运维·服务器·c语言·开发语言·网络·c++
2501_941111463 小时前
C++中的原型模式
开发语言·c++·算法