我經常遇到這樣的問題,即我有一個具有一對Register/Unregister類型方法的類。例如:在C++中實現寄存器/取消寄存器模式
class Log {
public:
void AddSink(ostream & Sink);
void RemoveSink(ostream & Sink);
};
這適用於幾種不同的情況,如觀察者模式或相關的東西。我擔心的是,這有多安全?從previous question我知道,我無法安全地從該引用中派生出對象標識。 This approach返回一個迭代器給調用者,他們必須傳遞給註銷方法,但是這暴露了實現細節(迭代器類型),所以我不喜歡它。我可以返回一個整數句柄,但這需要很多額外的內部管理(什麼是最小的空閒句柄?)。你如何去做這件事?
智能指針用於對象的共享所有權,這裏不是這種情況。另外,我認爲我引用的其他問題中討論的內容也適用於智能指針。 – 2009-12-10 14:11:56
對不起,我的糟糕的智能指針與shared_ptr不同,所以請忽略我的評論部分。 – 2009-12-10 14:12:52
答案也發佈在其他問題中。只要你比較相同類型的指針(比如ISink),一切都很好。 – Sebastian 2009-12-10 14:18:55