【发布时间】:2020-06-25 07:51:17
【问题描述】:
假设我有课
类基类 {
上市:
基类();
~BaseClass();
无效 runAllMethods();
};
和子类
类子类:公共基类{
上市:
子类();
〜子类();
// 任意方法
无效方法1();
无效方法2();
...
};
假设我然后创建对象
子类 myObject = SubClass();
如何在BaseClass中写入runAllMethods(),使其可以运行自己的所有方法,包括SubClass中定义的方法(例如methods1()、method2()等)?换句话说,如何让超类在不知道子类方法名称的情况下访问子类中的方法?
【问题讨论】:
-
你不能。 C++ 尚不具备其他语言所使用的反射功能。要么覆盖子类中的
runAllMethods,要么以另一种方式收集“所有方法”(例如,函数指针的std::vector)。 -
在您的问题中显示一些minimal reproducible example。你的程序在做什么?您已经拥有几百万行 C++ 代码?在什么操作系统和编译器上? 请edit您的问题进行改进
-
Meta:你为什么要运行你一无所知的方法(参数、返回值、功能)?尤其是所有的方法?