我有一個自定義容器,它以兩種不同的方式實現,但只有一個接口。有些事情是這樣的。具有派生類的自定義容器的迭代器
class Vector
{
virtual Iterator begin() = 0;
virtual Iterator end() = 0 ;
... // some more functions.
} ;
class VectorImplA : public Vector
{
Iterator begin() { return m_data.begin() ; }
Iterator end() { return m_data.end() ; }
private:
SomeFloatContainer m_data ;
} ;
class VectorImplB : public Vector
{
Iterator begin() { return m_data.end() ; }
Iterator end() ; { return m_data.end() ; }
private:
std::vector <float> m_data ;
} ;
我需要的是一個Iterator的統一接口,以便我可以在基類中使用它。有任何想法嗎 ?
+1雖然我絕對不會使用'next'操作,更好地堅持與STL互操作的慣例。 – 2010-02-03 14:37:22
感謝您的答案。我已經實現了上面概述的#1。與此問題是我不能有運行時多態性。即從基類Vector中導出VectorImplA和VectorImplB,並使用Vector *來操作派生類。我對麼 ? – Surya 2010-02-03 15:17:15