CXXRecords getNameAsString,如何获取全名

CXXRecords getNameAsString, how to get full name?

本文关键字:获取 全名 何获取 getNameAsString CXXRecords      更新时间:2023-10-16
 namespace A {
     namespace B {
         class C {
             class D {
             };
         };
     }
 }

CXXRecords 对于D getNameAsString会返回D.
我怎样才能获得全名::A::B::C::D

我试图递归地调用getParent但我无法获得命名空间。

经过大量的搜索和尝试,我发现

QualType::getAsString(cl->getASTContext().getTypeDeclType(const_cast<CXXRecordDecl*>(cl)).split())

作为可用的解决方案,它将输出class A::B::C::D.
对于namespace using std; vector<int> g;,它将输出class std::vector<int>

只有std::vector会很好,但是简单的字符串操作将解决此问题。

假设你的 RecordDecl 指针变量被命名为 recordDecl,你可以简单地使用 recordDecl->getQualifiedNameAsString()