c++ - 函数返回引用,失败时返回什么?

标签 c++ singleton

由于我设计了一个以插件为目标的框架,我将我的一部分代码实现为单例。此类负责处理与我从框架内通信的外部程序的连接。

启用外部通信是一个运行时设置,但是,如果它被禁用,我不想允许从框架内的模型访问它。我已经使用此处经常推荐的版本实现了它:

class Communicator {
public: 
    static Communicator& getInstance() {
        static Communicator instance;
        return instance;
    }
    // ...
private: 
    static bool ServiceEnabled;
    // Constructors, operator=, etc ...
}

现在,鉴于 ServiceEnabledfalse,我不想让 getInstance 返回有效的 Communicator。但是由于我返回了一个引用,我不能简单地返回 0 或类似的东西......正确的行为是什么?请注意,即使 ServiceEnabled 为 false,继续执行也是完全有效的,所以我不能在它为 false 时中止。

最佳答案

添加一个公共(public)函数

static bool IsServiceEnabled();

并在 getInstance 中抛出异常,当 ServiceEnabled == false 被调用时;

关于c++ - 函数返回引用,失败时返回什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6693413/

相关文章:

c++ - Netbeans 和 C++ 安装

Java单例模式

java - Singleton Util 类的替代方案

java - 正确使用同步单例?

c++:我的单例的 getInstance() 方法是线程安全的吗?

c++ - Allegro Draw Sprite() 无法正常运行 C++

c++ - CRecordset::snapshot 在 VS2012 中不再起作用——有什么选择?

c++ - 逻辑运算符在 if 语句中是否相互影响?

c++ - Nim 游戏 - 堆栈选择

c# - 在 C# Windows 应用程序中存储静态用户数据