2012-04-28 84 views
2

是否可以创建一个只能构建一次的类?如果您尝试创建其他实例,则会发生编译时错误。单类实例C++

+4

你在找什么叫做单身。 http://en.wikipedia.org/wiki/Singleton_pattern我必须敦促你,但要非常认真地考虑一个单例对你的应用是否真的有意义。单身人士使用时间的99%,不应该是这样。 – Corbin 2012-04-28 08:33:22

+0

但是,单例只会为所有创建查询返回相同的实例。可能这接收异常更有用。 – 2012-04-28 08:34:01

+0

AFAIK没有选择让这样的类有编译时错误。但是有一种叫做'Singleton'的流行模式,用于制造这种阻止实例化的类。你可以很容易地谷歌的例子。 – Yarg 2012-04-28 08:35:57

回答

0

为什么编译错误?我想,你只需要实现Singleton设计模式。 看here

0

的类只有一个实例被称为单类新,

有许多方法来执行。最简单的显示如下

class MySingleton 
    { 
    public: 
     static MySingleton& Instance() 
     { 
     static MySingleton singleton; 
     return singleton; 
     } 

    // Other non-static member functions 
    private: 
     MySingleton() {};         // Private constructor 
     MySingleton(const MySingleton&);     // Prevent copy-construction 
     MySingleton& operator=(const MySingleton&);  // Prevent assignment 
    }; 
+0

rafdp问道编译时错误的例子,这不是一个答案。 – Yarg 2012-04-28 08:39:57

+0

@Yarg如果你会尝试创建MySingleton类的多个实例,那么这会给编译错误,这是rafdp问的。 – Jaguar 2012-04-28 08:45:00

+0

静态MySingleton&OtherInstance()如何静态MySingleton另一个Singleton; return anotherSingleton; }' – Yarg 2012-04-28 08:51:33

4

实例在运行时是动态的。编译错误在编译时。所以答案是否定的,不可能在任何第二个实例化上得到编译错误。

但是,您可以使用单身人士,但要非常仔细地考虑是否真的需要。