我想获得一个派生类指针的向量/列表(一个对应于抽象基类中的每个派生类),例如给定基类名称。
答案 0 :(得分:1)
所以要做到你想要做的事情
#include <list>
class BaseObject { };
class Dinosaur : public BaseObject { };
class Hammer : public BaseObject { };
void
myFunction() {
std::list<BaseObject*> myList;
myList.push_back(new Dinosaur());
myList.push_back(new Hammer());
}
请注意,列表中的对象在销毁列表时不会自由释放。您必须手动完成(迭代列表并调用 delete ),如果您是C ++初学者, auto_ptr ,以及魔术世界,请查看有点复杂的内容智能指针^^
答案 1 :(得分:1)
你无法获得指向类的指针。类只是对象的规范。只有在通过实例化类创建对象时才能指向某些东西。
如果您有以下课程:
class FooBase {};
class DerivedFoo : public FooBase {};
class MoreDerivedFoo : public DerivedFoo {};
然后,您可以创建MoreDerivedFoo
类型的对象,并使用任何类型的指针指向它。
MoreDerivedFoo mdf = new MoreDerivedFoo();
FooBase* p1 = &mdf;
DerivedFoo* p2 = &mdf;
MoreDerivedFoo* p3 = &mdf;
显然,每个指针都包含相同的内存地址。