我有一个C ++项目,并且沿途学习设计模式(我对C ++很陌生)。我有一种情况,我认为单身人士是一个解决方案。 (现在,等一下,等等,等一下,所有人都去了:单身人士是baaaaaad。让我们全力以赴,烧掉那个异端用户!!!)
我运行了以下示例:https://stackoverflow.com/a/1008289/2336887
...但是在使用C ++ 11版本时出现错误。
我的问题不是是否应该使用Singleton。它已被覆盖得足够多。
我的问题是: 为什么要删除公共构造函数,而不仅仅是保留私有构造函数? 如果停留在该位置,则会发生对已删除构造函数的错误调用。我不明白,这让我很沮丧。有人可以对C ++新手有所启发吗?
以下是避免去另一篇文章的代码:
sendResponse
感谢您的帮助...耐心等待。
p.s .:我可以将问题添加到原始帖子中,但是在这一点上,我认为这会带来更多的麻烦。
答案 0 :(得分:5)
为什么要删除公共构造函数,而不仅仅是保留私有结构 一个?
因为公共构造函数是副本构造函数。由于不需要并且不应使用该内容,因此将其删除。私有构造函数是默认的构造函数,供内部使用(在某个时候,必须构造一个单例!)
答案 1 :(得分:5)
为什么要删除公共构造函数,而不仅仅是保留私有构造函数?
单例的核心思想是只有一个实例。如果允许复制对象,则可能有多个实例。这就是删除单例的复制构造函数的原因:使单例不可复制。
如果停留在该位置,则会发生对已删除构造函数的错误调用。我不明白,这让我感到沮丧。
出现错误,因为您尝试复制不可复制的对象。不要尝试复制单例。我怀疑您应该改为引用单身人士:
S& bus = S::getInstance();