c++ - C++ 阻止用户创建对象实例
问题描述
我必须为某些类型的对象创建简单的单例对象工厂。问题是我找不到阻止用户通过构造函数创建对象实例的聪明方法。我知道我可以将构造函数移动到私有/受保护部分,但是当构造函数是私有/受保护时,工厂现在将如何创建新对象?让工厂成为每个班级的朋友并不是很聪明,因为我需要在每个标题中预先声明工厂并编写额外的“朋友工厂”;在每个班级。如何正确执行此操作?
解决方案
在类中,添加一个静态成员作为指向该类相同类型的指针。这将是你的单身人士。
初始化实例时,将运行构造函数。
如果是第一次,静态成员为空(从未初始化),正常运行构造函数并设置默认值。最后还将静态成员设置为this
. 现在您的单例已初始化。
在随后的构造函数调用中,静态指针不会为空。创建一个指向类类型的临时指针。将此指针设置为this
,然后设置this
为静态成员并删除指针。这将每次都删除新实例并返回相同的静态实例。
推荐阅读
- c# - 使用 Caliburn Micro 在 WPF 中更新 DataGrid
- asp.net-mvc - ORA-12537 实现 Hangfire.FluentNHibernate 时出错
- c# - 如何使用实体框架和 linq 仅获取具有唯一属性的记录?
- python - 根据用户输入绘制一条线
- apache-kafka - 具有单个分区的 Kafka Streams 在错误时暂停
- java - 使用 RestTemplate 访问微服务时报错 org.springframework.web.client.HttpClientErrorException: 400 null,如何解决
- java - 是否可以配置 clang-format 以使用箭头和花括号将 Java lambda 参数保持在一行?
- php - 无法连接:无法连接到 lyh-efz.ms-acdc.office.com,995:连接超时
- sql - 从查询中获取唯一数据
- r - data.table 包(或其 fread() 函数)与汉字的行为不一致