0
對象的比較指針我有以下主題-觀測器設計設計沒有數據成員
template<typename Data>
struct Observor{
Observor()
{
}
virtual void process(Data data) = 0;
};
template <typename Data>
class Subject
{
public:
void addObservor(Observor<Data>* observor)
{
_observors.insert(observor);
}
void removeObservor(Observor<Data>* observor)
{
boost::unordered_set<Observor<Data> * > ::iterator itr =
_observors.find(observor);
if(itr != _observors.end())
{
_observors.erase(observor);
}
}
protected:
boost::unordered_set<Observor<Data>* > _observors;
};
在上面的代碼中,觀測器設計類是由希望註冊到主題的所有類繼承。在函數removeObservor中,當我嘗試創建迭代器時,出現編譯錯誤。建議給我的解決方案是實現一個比較器(即<)。 Observor類然而沒有數據成員。我的比較器的基礎是什麼?
我想到的解決方案是使用每個觀察者派生類(即Derived1,Derived2)的typeid。但是,此解決方案僅適用於集合中只存在每個派生類的一個對象。因爲我可能有多個相同對象類型的實例,所以我被困在如何繼續
咦?你在比較指針。爲此,您不必執行任何操作。發佈未更改的錯誤消息。 –