作为一个学习练习,我试图直接使用Clang类在代码中构建C ++ AST。
NamedDecl
构造函数为protected
。
如何创建NamedDecl
实例?
答案 0 :(得分:1)
Clang使用NamedDecl
作为更具体的命名的decl的基类(例如ValueDecl
,TypeDecl
,...),它们仍然是更多的基类特定的Decl种类。因此,Clang不希望您直接创建NamedDecl并敦促您创建更具体的内容。
例如,如果你想创建一个代表一个类的对象,你应该创建一个RecordDecl
或XCCRecordDecl
。
当然,您可以通过派生clang::NamedDecl
并使派生类的构造函数成为公共来绕过这种机制。