Преобразование из вектора подкласса STL в вектор базового класса

Мне интересно, можно ли преобразовать вектор значений производного класса в вектор значений базового класса. В частности, я хочу иметь возможность передавать вектор объектов базового класса функции, формальные параметры которой принимают вектор базового класса. Это не представляется возможным напрямую, поскольку следующий пример кода вызывает ошибку (с использованием g ++):

#include <vector>

class A {
};

class B : public A {
};


void function(std::vector<A> objs) {
}

int main(int argc, char **argv) {
    std::vector<B> objs_b;
    objs_b.push_back(B());
    function(objs_b);
}

test.cc:16: error: преобразование из 'std :: vector > 'в нескалярный тип' std :: vector > 'запрошено

Я хотел бы иметь возможность вызывать функцию без необходимости определять новый вектор с элементами типа A, вставив мои элементы типа B или изменив на вектор указателей.

7
задан Robᵩ 18 April 2011 в 16:56
поделиться