我正在開發一個 C 專案,其中有一個名為 的抽象類Aggregate,它代表另一個名為 的抽象類的容器Primitive。
我希望能夠遍歷Aggregate,而不必擔心Primitive物件實際存盤方式的細節。
由于我不是很精通 C ,所以我有兩個問題:
- 首先,甚至有可能做這樣的事情嗎?
Aggregate其次,我的類及其派生類究竟應該做什么才能使其正常作業?
非常感謝任何解釋/參考。
uj5u.com熱心網友回復:
- 首先,甚至有可能做這樣的事情嗎?
- 其次,我的 Aggregate 類及其派生類究竟應該做什么才能使其正常作業?
是的,您“簡單地”添加到兩個回傳 a和一個迭代器Aggregate的虛函式。begin()end()
struct Aggregate
{
struct iterator { /* ... */ };
virtual ~Aggregate() {}
virtual iterator begin() { return {}; }
virtual iterator end() { return begin(); }
};
然后,您可以“免費”使用標準庫中的回圈和演算法范圍:
for (auto& p : aggregate) {
p.value = 0;
}
std::copy(aggregate.begin(), aggregate.end(), aggregate_copy.begin());
您需要一些樣板代碼來實作一個作業迭代器,但您將通過良好的 Google 搜索進行管理。
作業演示
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/515856.html
標籤:C 遗产迭代器抽象类
上一篇:僅當dll可用時從介面繼承
