假设我有一个基类A和两个派生类B和C。我想创建一个由B和C的虚拟成员组成的函数指针数组并执行它们。
我该怎么做?
我真的很想更进一步,甚至不让对象共享父类,但我认为这更容易。
如果你有
class A { virtual void f() = 0; };
并且从A派生出类B和C,那么你就可以做
using memfuncptr = void(A::*)();
memfuncptr memfuncs[] {&B::f};
A a;
a.*(memfuncs[0]);
这确实要求所有所需的成员函数都是 A 的成员。