c++ - CXXRecords getNameAsString,如何获取全名?

标签 c++ clang llvm llvm-clang libtooling

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

CXXRecords 对于带有 getNameAsStringD 将返回 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会很好,但是 简单的字符串操作就可以解决这个问题。

关于c++ - CXXRecords getNameAsString,如何获取全名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25701536/

相关文章:

c++ - LLVM 最大的好处是什么?

c++ - C++构造函数中点<函数名>的含义

ios - "-WI,-S,-x"是什么意思?

java - 使用 CREATE_NEW_PROCESS_GROUP 创建主机时,将 Ctrl+C 发送到子进程

c++ - boost 多重继承的序列化

c++ - g++优化: O2 flag fixes a broken code where O3 breaks it again

c++ - std::mem_fn 返回的函数对象是否需要 const 重载

c++ - 显式转换运算符和常量引用限定

llvm - 如何获得给定指令的下一条立即指令?

c++ - 对 static const int 的 undefined reference