类似于这个问题:Print the type of a parameter (ParmVarDecl) with clang API,我想将参数/字段类型作为字符串获取,但重要的是我希望类型是完全限定的,例如
namespace n {
class A {};
class B {
void f(std::vector<A> a) {}
std::vector<A> m_a;
};
} // n
我想拥有std::vector<n::A>
,没有std::vector<A>
。
我试过这个解决方案:http ://clang-developers.42468.n3.nabble.com/Getting-the-fully-scoped-type-of-a-function-parameter-td4028221.html (getAsCXXRecordDecl() 和 getQualifiedNameAsString ()),但在这两种情况下都为我decl.getType()->getAsCXXRecordDecl()
返回nullptr
。
更新:另外,这个解决方案如何在 clang 中打印完全合格的 Expr?没有帮助,因为我正在使用的 clang 7 中没有 PrintCanonicalTypes。
我想我必须升级到 clang 8 并再试一次。