CXXRecords getNameAsString,如何获取全名?

时间:2014-09-06 14:59:30

标签: c++ clang llvm llvm-clang libtooling

 namespace A {
     namespace B {
         class C {
             class D {
             };
         };
     }
 }
对于CXXRecords D,{p> getNameAsString会返回D 如何获取全名::A::B::C::D

我试图以递归方式调用getParent但我无法获取命名空间..

2 个答案:

答案 0 :(得分:3)

经过大量搜索并尝试找到

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会很好,但是 简单的字符串操作将解决这个问题。

答案 1 :(得分:0)

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