问题描述
我了解C ++中的Visitor模式,并且好奇地反复出现了模板模式(CRTP)。 但是我在尝试理解如何使用 clang :: TypeVisitor :: Visit 方法来递归地沿类型结构递归时遇到了麻烦。 例如,我有一个如下所示的C ++函数对象,我想获取模板参数(enumT)的类型,并最终获取其声明(声明该枚举的位置)
enum unscoped_enum {
val_3,val_4
};
template <unscoped_enum enumT>
class funcObject{
public:
void operator()() const {}
};
我派生的访问者类如下:
class DerivedVisitor : public TypeVisitor<DerivedVisitor> {
void *Visit(QualType T) {
if (T.isNull())
return nullptr;
return Visit(T.getTypePtr()) //not sure this is correct
}
}
我的问题是:我如何确定要实现的Visit *方法以便我获得EnumDecl?
像VisitEnumType(const EnumType et)
就是其中之一。
但是剩下的是什么?
另外,如果我从QualType开始访问,是否以正确的方式使用QualType.getTYpePtr
调用访问?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)