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;
相关推荐
Shadow(⊙o⊙)18 小时前
信号2.0,深入信号三张表block pending handlers,core文件的使用,信号执行逻辑:CPU虚拟内存物理内存,时钟源,软中断。
linux·运维·服务器·开发语言·c++
不吃土豆的马铃薯18 小时前
高并发服务器数据库连接池设计详解
服务器·网络·数据库·c++·mysql
大白话_NOI18 小时前
【二分答案】附通用模板
c++·算法
Shadow(⊙o⊙)18 小时前
C++进阶知识3.0
linux·服务器·开发语言·c++
春栀怡铃声18 小时前
【C++修仙录03】进阶篇:继承
c++
.千余18 小时前
【C++】C++ map 与 multimap 完全指南:键值对容器详解
开发语言·c++·笔记·学习·其他
Frank学习路上18 小时前
【C++】面试:内存管理
c++·面试
牢姐与蒯18 小时前
c++数据结构之c++11(三)
开发语言·c++
Irissgwe19 小时前
数据结构-二叉树
数据结构·c++·二叉树·c·
凡人叶枫1 天前
Effective C++ 条款30:透彻了解 inlining 的里里外外
linux·开发语言·c++·嵌入式开发·effective c++