Я уверен, что это не так, но я бы хотел попросить, если есть лучший способ. У меня есть базовый класс A и производный класс B, теперь у меня есть std:: список A *, который указывает на B *, и я хочу скопировать этот список A * в std::vector B *, поэтому в основном я хочу для этого:
std::list<A*> aList = someObject.getAs();
std::vector<B*> bVec = std::vector<B*>(aList.begin(), aList.end());
Я уверен, что это должно компилироваться, когда список и вектор будут одного и того же типа (например, оба были A *), но так как в этом случае A * является базовым классом B *, я не могу сделать это так, потому что мне пришлось бы явно приводить пример, например:
std::list<A*> aList = someObject.getAs();
std::vector<B*> bVec;
bVec.reserve(aList.size());
std::list<A*>::iterator it = aList.begin();
for(it; it!=aList.end(); ++it)
{
B* b = static_cast<B*>(*it);
bVec.push_back(b);
}
Есть ли более элегантный способ, чем мой второй подход, или мне нужно сделать это так?