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;
相关推荐
tankeven35 分钟前
C++ 智能指针
c++
handler013 小时前
【算法模板】最小生成树:稠密图选 Prim,稀疏图选 Kruskal
c语言·数据结构·c++·算法
许长安3 小时前
RPC 异步调用基本使用方法:基于官方helloworld-async 示例
c++·经验分享·笔记·rpc
sparEE4 小时前
c++面向对象:对象的赋值
开发语言·c++
此生决int4 小时前
快速复习之数据结构篇——栈和队列
数据结构·c++
H_BB4 小时前
第17届蓝桥杯备战历程
c++·算法·职场和发展·蓝桥杯
daad7774 小时前
记录一次上下文切换次数的统计
服务器·c++·算法
tankeven4 小时前
C++ Lambda 表达式
c++
fangzt20105 小时前
插件系统:让其他人也能给编辑器写节点
c++
诙_5 小时前
深入理解C++文件操作
开发语言·c++