class Base
{
public :
void func()
{
cout << "Base func()" << endl;
}
};
class DerivedA : public Base
{
public :
void func()
{
cout << "Derived A func()" << endl;
}
};
class DerivedB : public Base
{
public :
void func()
{
cout << "Derived B func()" << endl;
}
};
void main()
{
DerivedA a;
DerivedB b;
vector<shared_ptr<Base>> temp;
temp.push_back(make_shared<DerivedA> (a));
temp.push_back(make_shared<DerivedB> (b));
for(auto ptr : temp)
ptr->func();
}
ВыходКак хранить несколько производных классов в векторе без нарезки
Base func()
Base func()
но то, что я ожидал, это
Derived A func()
Derived B func()
Как я мог нажать на производный класс в базовый класс вектор без нарезки? Если нет способа решить эту проблему, существует ли какой-либо эквивалентный метод для хранения нескольких производных классов в один массив, такой как объект?