CXXRecords getNameAsString,如何获取全名?

问题描述 投票:2回答:2
 namespace A {
     namespace B {
         class C {
             class D {
             };
         };
     }
 }

CXXRecordsD的[getNameAsString一起返回D。如何获得全名::A::B::C::D

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

c++ clang llvm llvm-clang libtooling
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>

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


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.