class A { }
class B : public A { }
std::vector<B*> things;
void Func1(const std::vector<B*>& Bthings) {}
void Func2(const std::vector<A*>& Athings) {}
Func1(things); // ok
Func2(things); // not ok
我有類似上面的代碼的一些問題。我有一個指向對象的stl集合,但我不想讓Func2知道這個子類。有沒有一個很好的方法來做到這一點?我知道std::vector<B*>
不是std::vector<A*>
,但我不認爲這是一個罕見的問題。我能想到的是有2個單獨的A *和B *的列表,這只是看起來不對?stl集合和多態性
該模板對我來說不是那麼好,但我會去「複製整個矢量」 – DanDan