В C ++ у меня есть Parent
класс.Child1
, Child2
и т. Д. Наследуют от него.Классы Child1
, Child2
и т. Д. Совместно используют некоторые методы родителя и имеют свои собственные методы.
Я объявляю vector
, чтобы иметь возможность добавить любого потомка Parent
.
vector<Parent*> v = {new Child1(), new Child2(),...};
В зависимости от ребенка, я хочу определить другое поведение для метода BClass::someMethod(Child1* child)
, BClass::someMethod(Child2* child)
... Что-то вроде Шаблон посетителя .Проблема в том, что я должен передать элемент v
vector в BClass::someMethod(...)
, и компилятор скажет, например, для метода BClass::someMethod(Child1* c1)
, когда передано v[0]
:
Argument of type Parent* is incompatible with parameter of type Child1*
Не могли бы вы сказатьмне, как преодолеть проблему?