如何通过了解类名和方法名来找到一个类来调用它的方法?
详细说明: 我正在尝试编写库来替换另一个程序中的某些函数,这些函数也是通过LD_PRELOAD功能使用C ++编写的。 我需要能够从程序中调用函数来集成这个库。
答案 0 :(得分:1)
C ++在编译过程中丢失所有类命名信息!
你不能这样做:
Class.forName("MyClass");
就像你从Java中知道的那样。
http://en.cppreference.com/w/cpp/language/class
这种技术称为反射,它不受C ++的支持 您可以使用框架(例如Boost)来帮助您,但是您必须使用此框架声明和定义要调用的方法。
答案 1 :(得分:1)
C ++不支持反射,因此在编译后不能按名称搜索函数/类。
听起来如果可能,设计需要重新设计。理想情况下,您应该更新库以包含程序所需的内容。要么将通用逻辑从程序中拉出到第三个库中 - 要么将需要程序调用的函数放入当前库中,只需将相关数据传递给库即可。
如果无法做到这一点,您可以将程序中的函数指针传递到库中 - 这使得库可以访问所需的函数,而无需真正了解它的来源。
即
void library_function1(std::function<void(int)> func)
{
func(1);
}