如题,我现在需要一个单例的实现。有一个类Mine,它的构造函数是Mine(MineStrut& mine);MineStrut是一个结构体,因为每次创建的时候需要外部传递给它一个结构体,这个类需要单例实现,因为只要创建一个就行了。目前的问题是在于我可以创建一个如下的单例,
class Singleton:
{
// 其它成员
public:
static Singleton * GetInstance()
{
if (m_pInstance == NULL)
m_pInstance = new Singleton(); // 注意此处是一个默认的构造函数,如果我没有默认的构造函数怎么办?我创建一个对象是需要参数的,但是现在在单例中没有这个实参。
return m_pInstance;
}
private:
Singleton(){};
static Singleton * m_pInstance;
}
那么该如何改进呢?
如果用静态来实现class Singleton:
{
// 其它成员
public:
static Singleton &GetInstance(){
static Singleton instance;
return instance;
}
private:
Singleton(){};
}
这样构造函数还是不能有形参啊。怎么办啊
把你的构造函数修改成接收参数就行了
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;
};
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。