作爲一個框架設計的結果,我使用一個插件作爲目標,我已經將一部分代碼實現爲一個單例。這個類負責處理與我在框架內進行通信的外部程序的連接。函數返回引用,失敗時返回什麼?
但是,啓用外部通信是一種運行時設置,如果它被禁用,我不想允許從框架內的模型訪問它。我一直在使用,這是經常在這裏推薦的版本中實現它:,因爲ServiceEnabled
是false
class Communicator {
public:
static Communicator& getInstance() {
static Communicator instance;
return instance;
}
// ...
private:
static bool ServiceEnabled;
// Constructors, operator=, etc ...
}
現在,我不希望讓getInstance
返回一個有效的Communicator
。但是,因爲我返回一個參考,我不能簡單地返回0或某些這樣的...什麼適當的行爲是什麼?請注意,即使ServiceEnabled
爲假,繼續執行也是完全有效的,所以如果是的話我不能中止。
豈不更好地在這裏返回一個指針滿足您的需求? (我假設拋出一個異常不是你以後的事情。) – Mat
什麼對象是錯誤的'ServiceEnabled'成員? – aschepler
@aschepler:哎呦。固定。 – carlpett