c++ 单例模式–构造函数传递参数
// singleton.h
class Singleton:
{
public:
static Singleton * GetInstance(MineStrut* pMineStruct)
{
if (m_pInstance == NULL) {
m_pInstance = new Singleton(pMineStruct);
}
return m_pInstance;
}
private:
Singleton(MineStrut* pMineStruct)
: m_pMineStruct(m_pMineStruct)
{
}
private:
MineStrut* m_pMineStruct;
static Singleton * m_pInstance;
};
//singleton.cc
Singleton *Singleton::m_pInstance = nullptr;
void Singleton::function() {}
....
class中static Singleton *m_pInstance为申明,需要在singleton.cc中定义它,不然会出现以下错误。
test.cpp:(.text._ZN3Log11getInstanceEmj[_ZN3Log11getInstanceEmj]+0x45): undefined reference to `Singleton::m_pInstance’
本文介绍了一种在C++中实现带有构造函数参数传递的单例模式的方法。通过在Singleton类中定义静态成员指针并在源文件中初始化来避免未定义引用错误。文章还展示了如何在获取实例时传递结构体参数。
1040





