如何使用包含我的代码的文件来获取 C++ 中的类的名称?

Posted

技术标签:

【中文标题】如何使用包含我的代码的文件来获取 C++ 中的类的名称?【英文标题】:How can I get the name of a class in C++ using a file with my code? 【发布时间】:2016-02-22 03:35:08 【问题描述】:

例如:

类 LOC_COUNTER //b ...

我只想获得“LOC COUNTER”,在我使用 I/O 阅读器获得的文件的上下文中,我有一个带有“class LOC_COUNTER //b”的字符串,但我只想要类的名称。

【问题讨论】:

//b是什么?​​什么文件?什么 I/O 阅读器?您是否正在尝试解析 C++ 源代码?太模糊了。 【参考方案1】:

你可以使用typeid:

class X

    int a;
;

int main()


    X myVariable;
    cout << typeid(myVariable).name() << endl;


这会打印一个 IMPLEMENTATION DEFINED 字符串。在 Visual Studio 2015 中,它会打印“class X”。

【讨论】:

不幸的是,在我见过的一些实现中(不记得是哪个),你只是得到一个空字符串。所以它完全不可靠......更不用说RTTI甚至不总是可用的。但是,对于非关键应用程序或特定平台上的应用程序,这是您最好的选择,也是唯一的选择,除非您想开始硬编码。 另外,看起来 OP 实际上是在尝试解析 C++,而不是获取有关当前执行程序的反射信息。虽然这个问题还很不清楚。 是的,也许,不清楚。这就是为什么我在答案中放了一个代码示例。 嗯,很抱歉模棱两可。我想说的是我有字符串 line = "class MyNewClass" 问题是:我怎样才能只得到 "My NewClass"

以上是关于如何使用包含我的代码的文件来获取 C++ 中的类的名称?的主要内容,如果未能解决你的问题,请参考以下文章

C++ 在 Map 中的类的一组值中插入一个值

c++ DLL:包含项目中的类

获取 Qt 对象的大小

[C++ 提高] --- 类的存储 和 包含虚函数的类

[C++ 提高] --- 类的存储 和 包含虚函数的类

c++ 中的每个对象是不是包含不同版本的类成员函数?