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;
相关推荐
blueman88889 小时前
Qt5通过vcpkg中调用时,在debug模式下调试时总是调用release的plugins文件夹中的dll
c++·qt·cmake
jinyishu_11 小时前
C++ string使用方法
开发语言·c++
乐观勇敢坚强的老彭12 小时前
C++浮点数使用注意事项
开发语言·c++
库克克12 小时前
【C++ 】内联函数
java·开发语言·c++
盐焗鹌鹑蛋12 小时前
【C++】红黑树
c++
aaPIXa62215 小时前
C++采样引导优化SPGO——比PGO更智能的编译器决策新方案
java·c++·人工智能
Starmoon_dhw15 小时前
题解:P17078 夏日甜点
c++·学习·算法·图论
某不知名網友15 小时前
C/C++动态内存管理,智能指针及RAlI思想。
java·c语言·c++
hold?fish:palm16 小时前
从源码到可执行文件:C++程序的编译过程
开发语言·c++
lingran__16 小时前
C++_STL简介
开发语言·c++