我想创建一个父类向量并将子对象推送到该向量。另外,我想从这个向量中获取子对象的函数。我的演示是这样的:
#include <iostream>
#include <vector>
class A
{
public:
virtual void print() { std::cout << "A"; }
};
class B: public A
{
public:
void print() override { std::cout << "B"; }
};
class C: public A
{
public:
void print() override { std::cout << "C"; }
};
int main()
{
std::vector<A> list;
B obj1;
list.push_back(obj1);
C obj2;
list.push_back(obj2);
for(int i=0; i<list.size(); i++)
list[i].print();
//Expected output: BC
return 0;
}
您可以使用指针向量(即
vector<A*>
),这将允许多态性:
int main()
{
std::vector<A*> list;
B obj1;
list.push_back(&obj1);
C obj2;
list.push_back(&obj2);
for(int i=0; i<list.size(); i++) {
list[i]->print();
}
return 0;
}