2011-02-03 101 views
0

我有一個繼承結構的對象與begin()和end()作爲純虛擬成員函數在基類。從這個對象我打算建立一個複合結構。這個內部對象有std :: vector成員,begin()和end()從它們獲取數據。但是在葉類中沒有矢量。現在我試圖在葉類中找到begin()和end()的返回值。什麼會是一個很好的方法來做到這一點?當沒有容器時作爲迭代器返回什麼?

最簡單的方法是在葉類中有一個向量成員,其中沒有元素來加油begin()和end(),但是這樣做感覺不對。

+0

爲什麼感覺不對?這對我來說很直觀。 – 2011-02-03 23:31:01

+4

如果不是所有派生類都可以有意義地實現一個函數,那麼這個函數是否在基類中?聽起來像不好的設計產品,對我來說。 – GManNickG 2011-02-03 23:32:15

回答

1

你可以在你的葉類中實現一個非常簡單的迭代器類,它只需返回虛擬迭代器。例如。 begin()返回與end()返回的迭代器相同的迭代器。您還需要實現一些比較功能。我不太清楚std :: iterator如何處理這個問題,但也許有一些你需要的東西。

相關問題