我有點新C++, 我有一個抽象類(純虛擬),其中2類從它繼承。 每個派生類保存類似的數據,只在不同的STL容器(數組vs地圖) 我重載基類的運算符,以執行,例如,添加STL元素。 我希望能夠迭代STL的元素,而不管它是什麼類型。多態的通用STL迭代器
我已經搜索了幾天,現在泛型迭代器,和類似的東西,但找不到任何東西。
我沒有太多的代碼可以分享,因爲我無法做任何事情。 我想也許讓我的基類擁有一個模板變量,它將代表STL容器,然後在運算符中獲取它的迭代器,但是又不知道如何去做。
protected:
template<class T>
T gStlContainer;
,然後訪問
gStlContainer::iterator<double> it;
顯然沒有奏效。
有什麼建議嗎? 謝謝!
編輯: 我正在編輯嘗試使用示例更好地解釋。 我重載了基類(抽象)類中的+運算符,我希望它執行的是迭代STL容器的每個元素,並將其添加到另一個元素,例如, 假設我將這個數組作爲STL
arr = [0,1,2,3] // Say it's stored in Derived2 class
arr = [4,5,6,7] // Say it's stored in Derived3 class
這些數組每個存儲在一個派生類中。 當我在做
Derived1 = Derived2 + Derived3;
然後Derived1將舉行
arr = [4,6,8,10]
希望它更清楚一點了。問題在於它並不總是一個數組,例如它可以組合數組和地圖。這就是爲什麼我需要泛型迭代器或某種解決方案。
謝謝!
什麼是您的基類的界面(顯示您想要的樣子的一個有限版本)。我會考慮在基類中定義接口,然後實現一個單一的模板化派生類型,該類型將容器的類型作爲模板參數...還要注意您必須使用哪種版本的標準(C++ 03/C++ 11)以及是否可以使用類似'boost :: function'或'std :: function'的庫。如果不需要提供算法的單個實現並且每個派生類型都進行迭代,那麼它可能再簡單得多。 –