最佳答案
我想在一个向量中存储几个类的实例。由于所有类都从同一个基类继承,所以这应该是可能的。
想象一下这个程序:
#include <iostream>
#include <vector>
using namespace std;
class Base
{
public:
virtual void identify ()
{
cout << "BASE" << endl;
}
};
class Derived: public Base
{
public:
virtual void identify ()
{
cout << "DERIVED" << endl;
}
};
int main ()
{
Derived derived;
vector<Base> vect;
vect.push_back(derived);
vect[0].identify();
return 0;
}
我希望它打印 "DERIVED"
,因为 identify()
方法是 virtual
。相反,vect[0]
似乎是一个 Base
实例,它打印 "BASE"
。
我想我可以编写自己的容器(可能来源于 vector
) ,以某种方式能够做到这一点(也许只持有指针...)。
我只是想知道是否有更多的 C + + 的方式来做这件事。我想是完全 vector
兼容(只是为了方便,如果其他用户曾经使用我的代码)。