C++ VS单例模式报 错误 LNK2001 无法解析的外部符号 private: static class SingletonPattern错误

一、前言

如图所示,C++使用VS写完单例模式后,报如下错误:
错误 LNK2001 无法解析的外部符号 “private: static class SingletonPattern * SingletonPattern::m_Instance” (?m_Instance@SingletonPattern@@0PAV1@A) Test
错误 LNK1120 1 个无法解析的外部命令
在这里插入图片描述

二、代码

2.1 SingletonPattern.h

#pragma once

#include <iostream>

using namespace std;
class SingletonPattern
{
private:
	SingletonPattern();
public:
	~SingletonPattern();

private:
	static SingletonPattern* m_Instance;

public:
	static SingletonPattern* GetInstance();

	void display();
};


2.2 SingletonPattern.cpp

#include "SingletonPattern.h"
//SingletonPattern* SingletonPattern:: m_Instance = nullptr;
SingletonPattern::SingletonPattern()
{
	cout << "创建单例模式对象!" << endl;
}

SingletonPattern::~SingletonPattern()
{
	if (m_Instance != nullptr) {
		delete m_Instance;
		m_Instance = nullptr;
	}
	cout << "销毁单例模式对象!" << endl;
}

SingletonPattern *SingletonPattern::GetInstance()
{
	if (m_Instance == nullptr) {
		m_Instance = new SingletonPattern();
	}

	cout << "返回单例模式句柄!" << endl;
	return m_Instance;
}

void SingletonPattern::display()
{
	cout << "使用单例模式!" << endl;
}

三、测试

3.1测试代码

#include "SingletonPattern.h"

int main() {
	SingletonPattern* m_Test = SingletonPattern::GetInstance();
	m_Test->display();
	cin.ignore();
	return 0;
}

3.2测试结果

在这里插入图片描述

四、解决方案

SingletonPattern.cpp 文件中,
加入SingletonPattern* SingletonPattern:: m_Instance = nullptr;
也就是将我注释的那一行解开即可!!!

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页