我创建了一个名为的类A
,它有一个虚拟方法do_something
:
class A {
virtual int do_something() = 0;
}
B
子类A
:
class B {
virtual int do_something() {
return 42;
}
}
在我的主要功能的某个地方,我这样做了。
vector<A> arr;
arr.push_back(B());
int val = arr[0].do_something();
但是,我收到一个编译器错误,抱怨这do_something
是一个纯虚函数。我相信这是因为我声明向量包含 type 的对象A
,并且A
是一个抽象类。因此,编译器不知道在类B
中查看是否do_something
已定义。
有没有解决的办法?我仍然可以存储不同类型的对象的向量(尽管声明了一个通用的虚函数,但具有一个通用的超类)?