[英]C++ How to find class by it's name?
如何通过知道类名和方法名来找到一个类来调用它的方法?
详细信息:我正在尝试编写库来替换另一个程序中的一些函数,该程序也是通过 LD_PRELOAD 功能使用 C++ 编写的。 我需要能够从要集成该库的程序中调用函数。
C++ 在编译过程中丢失了所有的类命名信息!
你不能做这样的事情:
Class.forName("MyClass");
就像您从 Java 中知道的那样。
http://en.cppreference.com/w/cpp/language/class
这种技术称为反射,C++ 不支持它。您可以使用框架(例如 Boost)来帮助您,但是您要调用的方法必须使用该框架声明和定义。
C++ 不支持反射,因此您无法在编译后按名称搜索函数/类。
听起来如果可能的话,设计需要重新设计。 理想情况下,您应该更新库以包含它从程序中需要的内容。 要么将程序中的通用逻辑拉出到第三个库中——要么将程序需要调用的函数放入当前库中,然后将要操作的相关数据传递到库中。
如果这是不可能的,您可以将函数指针从您的程序传递到您的库中 - 这允许库访问它需要的函数,而无需真正了解它的来源。
IE
void library_function1(std::function<void(int)> func)
{
func(1);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.