在我的程序中,我有一个包含多个派生类的类。我正在尝试将派生类的所有实例存储在向量中。为此,向量具有基类类型,并且它们都存储在那里。但是当我尝试从向量访问属于派生类的方法时,我不能这样做,因为基类没有这个方法。有没有办法解决?下面的示例代码。
#include <vector>
#include <iostream>
using namespace std;
class base
{
};
class derived
:public base
{
public:
void foo()
{
cout << "test";
}
};
int main()
{
vector<base*> *bar = new vector<base*>();
bar->push_back(new derived);
bar->push_back(new derived);
bar[0].foo();
}
答案 0 :(得分:0)
在foo
课程中virtual
base
方法。然后在derived
类中覆盖它。
class base{
public:
virtual void foo()=0;
};
class derived
:public base
{
public:
void foo() overide
{
cout << "test";
}
};
现在,您可以使用foo
base
int main(){ // return type of main should be int, it is portable and standard
vector<base*> bar; // using raw pointer is error prone
bar.push_back(new derived);
bar.push_back(new derived);
bar[0]->foo();
return 0;
}