由于我设计了一个以插件为目标的框架,我将我的一部分代码实现为单例。此类负责处理与我从框架内通信的外部程序的连接。
启用外部通信是一个运行时设置,但是,如果它被禁用,我不想允许从框架内的模型访问它。我已经使用此处经常推荐的版本实现了它:
class Communicator {
public:
static Communicator& getInstance() {
static Communicator instance;
return instance;
}
// ...
private:
static bool ServiceEnabled;
// Constructors, operator=, etc ...
}
现在,鉴于 ServiceEnabled
为 false
,我不想让 getInstance
返回有效的 Communicator
。但是由于我返回了一个引用,我不能简单地返回 0 或类似的东西......正确的行为是什么?请注意,即使 ServiceEnabled
为 false,继续执行也是完全有效的,所以我不能在它为 false 时中止。
最佳答案
添加一个公共(public)函数
static bool IsServiceEnabled();
并在 getInstance
中抛出异常,当 ServiceEnabled == false 被调用时;
关于c++ - 函数返回引用,失败时返回什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6693413/