2
 namespace A {
     namespace B {
         class C {
             class D {
             };
         };
     }
 }

CXXRecords因为DwithgetNameAsString会返回D
我怎样才能得到全名::A::B::C::D

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

4

2 回答 2

4

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

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>.

onlystd::vector会很好,但简单的字符串操作将解决这个问题。

于 2014-09-07T09:36:14.513 回答
0

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

于 2019-10-04T18:23:25.200 回答