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