在我的程序中,我有一个包含许多继承类的Base类.我需要存储这些继承对象(或任何容器)的列表.我能想到的唯一方法是使用一个类型枚举的Base类列表,然后向下转换为继承类型.
不得不经常施放我的物体似乎只是试图将我的物体放在某个容器中.
还有其他选择吗?铸造没有看起来那么糟糕吗?
谢谢您的帮助!
通过虚函数使用多态,这就是他们的用途:
#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)
| 归档时间: |
|
| 查看次数: |
5066 次 |
| 最近记录: |