我想将几个类的实例存储在一个向量中。由于所有类都继承自同一个基类,这应该是可能的。
想象一下这个程序:
#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;
}
我希望它打印“派生”,因为“识别”方法是虚拟的。相反,“vect [0]”似乎是一个“基础”实例,它会打印
根据
我想我可以以某种方式编写自己的容器(可能从向量派生)能够做到这一点(也许只保存指针......)。我只是想问一下是否有更多的 C++ish 方法可以做到这一点。而且我想完全兼容矢量(如果其他用户应该使用我的代码,只是为了方便)。