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;
相关推荐
彷徨而立3 分钟前
【C++】介绍 std::ifstream 输入文件流
开发语言·c++
MC皮蛋侠客21 分钟前
C++17 多线程系列(十):多线程性能优化——从测量到调优
c++·多线程
程序大视界42 分钟前
【C++ 从基础到项目实战】C++(六):拷贝控制——浅拷贝与深拷贝,兼谈智能指针
开发语言·c++·cpp
代码中介商2 小时前
C++四大设计模式:单例、工厂、观察者、策略
java·c++·设计模式
2401_872418782 小时前
什么是多范式编程语言?——以 C++ 为例深入理解编程范式
java·大数据·c++
basketball6163 小时前
设计模式入门:3. 适配器模式详解 C++实现
c++·设计模式·适配器模式
程序大视界3 小时前
【C++ 从基础到项目实战】C++(二):数组、字符串与结构体——组织数据的容器
开发语言·c++·cpp
叶子野格3 小时前
《C语言学习:文件操作》16
c语言·开发语言·c++·学习·visual studio
Lumbrologist4 小时前
【C++】零基础入门 · 第 17 节:多线程编程基础
java·c++·算法
A_humble_scholar4 小时前
C++11 学习笔记:统一初始化、右值引用与完美转发
c++·笔记·学习