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;
相关推荐
曦樂~8 分钟前
【C++11】引用折叠原理
开发语言·c++
lucky_dog22 分钟前
C语言——交换数组元素🍀🍀🍀
c++
Mr_WangAndy37 分钟前
C++23新特性_if consteval
c++·c++23·c++40周年·if consteval
落羽的落羽42 分钟前
【Linux系统】初探 虚拟地址空间
linux·运维·服务器·c++·人工智能·学习·机器学习
Drone_xjw1 小时前
【CPP回调函数】以无人机系统为例梳理回调函数使用
c++·无人机
liu****1 小时前
11.字符函数和字符串函数(二)
c语言·开发语言·数据结构·c++·算法
Tandy12356_1 小时前
手写TCP/IP协议栈——以太网数据包处理
网络·c++·网络协议·tcp/ip
郝学胜-神的一滴1 小时前
Linux中的alarm函数详解:定时器信号处理指南
linux·服务器·开发语言·c++·程序人生
郝学胜-神的一滴1 小时前
Linux kill命令与kill函数:从信号原理到实战解析
linux·服务器·开发语言·c++·程序人生
起个名字费劲死了1 小时前
基于Mingw64 tesseract 实现英文字符和数字识别
c++·qt·字符识别