是否有可能做一个通用的单身人士?我想创建一些我可以继承并获得单例的功能。我在使用带有静态成员的模板时遇到了麻烦。静态单身?
不应该工作吗?
**
修订
**
感谢您的答复为止。所以现在我的问题是GameEngine看不到它自己的构造函数。我知道这是私人的,但仍然是。
Singleton.h
template <typename T>
class Singleton
{
private:
static std::shared_ptr<T> m_Instance;
public:
static std::shared_ptr<T> Instance();
};
template<typename T>
std::shared_ptr<T> Singleton<T>::m_Instance = nullptr;
template<typename T>
std::shared_ptr<T> Singleton<T>::Instance()
{
if(m_Instance == nullptr)
m_Instance = std::make_shared<T>();
return m_Instance;
}
GameEngine.h
class GameEngine : public Singleton<GameEngine>
{
private:
GameEngine();
};
(1)你为什么认为你需要一个单身人士? (2)如果你使用单例,为什么使用'shader_pointer'?这不像是单身人士会被破坏,所以你可能会削减那部分,只是使用参考... – delnan
为什么你把模板代码放在* .cpp中? – Grizzly
每当您发布有关编译器错误的问题时,请包括_complete_和_unedited_错误列表。另外,请在代码中指出_where_错误,因为可能很难甚至不可能计算行数。 –