繁体   English   中英

C++ 如何按名称查找类?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM