【发布时间】:2018-05-31 03:42:00
【问题描述】:
我正在尝试为来自各种类的游戏数据的集中访问点编写一个单例类。这就是我所拥有的......现在只是通用的。
--> Singleton.h
#pragma once
class Singleton {
public:
static Singleton* instance;
static Singleton* Get();
private:
Singleton() {};
};
Singleton* Singleton::Get() {
instance = new Singleton();
return instance;
}
--> 在 main.cpp 中,我尝试调用 Singleton 类
#include "Singleton.h"
Singleton* single = Singleton::Get();
--> 我在 MS Visual Studio 中收到以下错误
LNK2001 未解析的外部符号“public: static class Singleton * Singleton::instance”(?instance@Singleton@@2PAV1@A) TimePilot84 E:\VC\TimePilot84\TimePilot84\main.obj 1
如果它的构造函数是私有的并且访问公共构造函数是公共的但会产生错误,我不明白如何实例化这个类
我意识到在调用 Get 函数中的构造函数之前我没有测试该类是否存在,并且我还没有析构函数。
我只在 main 中对这个函数进行了一次调用,它不会编译。感谢您的帮助。
【问题讨论】:
-
一般推荐的 Singleton 方法:stackoverflow.com/a/1008289/3807729