【发布时间】:2016-09-26 16:16:18
【问题描述】:
我有一堆具有相同静态方法名称的类,parse。我想为泛型类创建一个调用parse 的通用函数。
我可以使用类的字符串名称调用方法,还是可以将类作为函数参数传递?
【问题讨论】:
-
你当然可以,使用模板元编程;但恐怕您正在考虑某种运行时反射,例如在 Java/C# 中,这在 C++ 中根本不可能。
-
在 C++ 中不能真正传递一个类。您可以玩一些模板游戏,但最好还是去老学校并传递一个指向静态方法的指针。需要更多关于您想要达到的目标的信息才能确定。
-
好吧,他所说的反射级别(按名称调用函数)显然在 C++ 中是可能的。无论如何,如果他不得不问这个问题,我不建议走那条路。为什么不为所有这些类提供一个通用接口,例如 IParser { virtual void parse() = 0;并让每个类实现 IParser。那么你的通用函数将是简单的 void Parse(IParser& p);或者你需要。如果您需要其他东西,则需要更具体地说明您希望这些东西如何工作。
-
为什么投反对票?
标签: c++ reflection static-methods