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

32 篇文章 0 订阅
3 篇文章 0 订阅

一、前言

如图所示,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;
也就是将我注释的那一行解开即可!!!

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值