开发者社区> 问答> 正文

C++单例模式的问题?

如题,我现在需要一个单例的实现。有一个类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(){};
 }

这样构造函数还是不能有形参啊。怎么办啊

展开
收起
爵霸 2016-06-08 13:52:26 2195 0
1 条回答
写回答
取消 提交回答
  • 把你的构造函数修改成接收参数就行了

     
    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; 
    };
     
    2019-07-17 19:31:47
    赞同 展开评论 打赏
问答分类:
C++
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
使用C++11开发PHP7扩展 立即下载
GPON Class C++ SFP O;T Transce 立即下载
GPON Class C++ SFP OLT Transce 立即下载