Как передать в функцию вектор класса наследника, если функция принимает вектор базового класса?

Я пыталась написать функцию, которая принимает вектор базового класса, а в функции main хотела использовать именно вектор класса-наследника базового класса, упомянутого выше:

#include <iostream>
#include <vector>
using namespace std;

class Base{

}

class Derived: public Base{

}

void function(vector<Base>& B){

}

int main(){
    vector<Derived> derivedVector;

    function(derivedVector);

    return 0;
}

Однако программа выдает следующую ошибку:

"void function(std::vector<Base,std::allocator<Base>> &)": невозможно преобразовать аргумент 1 из "std::vector<Derived,std::allocator<Derived>>" в "std::vector<Base,std::allocator<Base>> &"   

а также:

не удается инициализировать ссылку типа "std::vector<Base, std::allocator<Base>> &" (квалифицируется как неконстантная) со значением типа "std::vector<Derived, std::allocator<Derived>>"   

Я знаю, что указатель базового класса может принимать ссылку на класс-наследник, но в этом случае выходит ошибка. Может я сделала какую-то синтаксическую ошибку?


Ответы (0 шт):