Я использую C ++ 0x.
У меня есть функция call_third_party
, которая получает список A*
, преобразует его в список B*
, затем передает этот списокB*
в функцию third_party
.После вызова third_party
список B*
больше не нужен.
Как следует из названия, я не могу контролировать third_party
.
В настоящее время у меня есть что-то подобное.
void call_third_party(const vector<A*>& as) {
vector<unique_ptr<B>> allocated_bs;
vector<B*> bs;
vector<A*>::iterator it;
for (it = as.begin(); it < as.end(); it++) {
unique_ptr<B> b(new B(*it));
allocated_bs.push_back(b);
bs.push_back(b.get());
}
third_party(bs);
}
На всякий случай, если это поможет.Вот конструктор B
и подпись third_party
.
void third_party(const vector<B*>& bs);
B(A* a);
Есть ли лучший идиоматический способ сделать это?