继承对象列表 - C++

Jos*_*ain 0 c++ polymorphism

在我的程序中,我有一个包含许多继承类的Base类.我需要存储这些继承对象(或任何容器)的列表.我能想到的唯一方法是使用一个类型枚举的Base类列表,然后向下转换为继承类型.

不得不经常施放我的物体似乎只是试图将我的物体放在某个容器中.

还有其他选择吗?铸造没有看起来那么糟糕吗?

谢谢您的帮助!

kee*_*r12 6

通过虚函数使用多态,这就是他们的用途:

#include <algorithm>
#include <functional>
#include <iostream>
#include <list>

using namespace std;

class A {
public:
  virtual void print() {
    cout << "This is an A object" << endl;
  }
};

class B : public A {
public:
  virtual void print() {
    cout << "This is a B object" << endl;
  }
};

class C : public A {
public:
  virtual void print() {
    cout << "This is a C object" << endl;
  }
};

class D : public B {
  // empty
};

int main() {
  std::list<A*> objects;
  objects.push_back(new A());
  objects.push_back(new B());
  objects.push_back(new C());
  objects.push_back(new D());

  for_each(objects.begin(), objects.end(), mem_fun(&A::print));

  return 0;
}

// outputs:
// This is an A object
// This is a B object
// This is a C object
// This is a B object
Run Code Online (Sandbox Code Playgroud)