【发布时间】:2013-05-28 16:37:36
【问题描述】:
如何在 C++ 中创建方法指针数组?
问题是,尽管这些方法具有相同的签名,但它们属于不同的类。 这些类继承自同一个类。
例如:
class A : public Base {
virtual bool work();
}
class B : public Base {
virtual bool work();
}
我需要创建一个指向方法 A::work 和 B::work 的指针数组,在 另一个班级。
编辑 1:
我决定接受 Useless 的建议,选项 1:
vector<Base*> units;
Base *a = new A();
Base *b = new B();
units.push_back(a);
units.push_back(b);
谢谢
【问题讨论】:
-
你不能只创建一个指向基类成员的指针数组吗?
bool (Base::*array)[2];之类的东西? -
bool (*Base::work)()应该是可行的,只要work()在Base中定义。 -
我不得不问:您是否有理由不只是进行虚拟调用而不是尝试在这里使用函数指针?
-
你确定你问的是你的问题,而不是你想到的解决方案吗?
-
只有一个'Base'类指针数组。然后你可以在从数组中选择一个随机指针后调用虚拟“工作”函数。
标签: c++