Передать список наследуемых объектов в функцию, которая принимает список родительских объектов
У меня есть класс, который наследует от другого класса:
class A {
//...
};
class B : public A {
//...
};
У меня есть функция, которая принимает (const) список указателей на тип отца:
void foo(const list<A*>& myList);
Я хочу передать этой функции список, который содержит указатели на дочерний тип:
list<B*> myList;
//populate list
foo(myList);
Я получаю ошибку компиляции:
ошибка C2664: невозможно преобразовать параметр 1 из 'std:: list<_Ty>' в 'const std:: list<_Ty> &'
Я не смог разыграть его ни в стиле C, ни с reinterpret_cast
:
foo(reinterpret_cast<list<A*> >(myList));
Выдает ошибку
ошибка C2440: 'reinterpret_cast': невозможно преобразовать из 'std:: list<_Ty>' в 'std:: list<_Ty>'
foo((list<A*>)myList);
Выдает ошибку
ошибка C2440: "приведение типа": невозможно преобразовать из "std:: list<_Ty>" в "std:: list<_Ty>"
Одним из решений для этого было бы реализовать foo
за list<B*>
и 'список(
Сis another type that inherits from
A`), но это было бы менее элегантным решением. Есть ли способ передать список наследуемых объектов в виде списка объектов родительского типа?