提问人:FourierFlux 提问时间:11/15/2023 更新时间:11/15/2023 访问量:48
在 C++ 中执行子对象方法数组
Executing array of child objects methods in C++
问:
假设我有一个基类 A 和两个派生类 B 和 C。我想创建一个函数指针数组,该数组由 B 和 C 的虚拟成员组成并执行它们。
我该怎么做?
我真的很想更进一步,甚至不让对象共享父类,但我认为这更容易。
答:
1赞
Hugh Granger
11/15/2023
#1
如果您有class A { virtual void f() = 0; };
而类 B 和 C 派生自 A,那么你可以做
using memfuncptr = void(A::*)();
memfuncptr memfuncs[] {&B::f};
A a;
a.*(memfuncs[0]);
这确实要求所有所需的成员函数都是 A 的成员。
评论
1赞
paddy
11/15/2023
请考虑将示例更新为编译时不会出错的有效代码。它存在多个问题。
0赞
Hugh Granger
11/15/2023
我包括了指向成员函数的指针的语法。如果定义了类 B 和 C,并且包括 f(),则代码应编译。不幸的是,我在手机上,完整的答案是不切实际的。
评论