我应该如何创建 Clang NamedDecl 实例?

How should I create a Clang NamedDecl instance?

作为学习练习,我正在尝试直接使用 Clang 类 在代码中构建 C++ AST。

NamedDecl 构造函数是 protected

如何创建 NamedDecl 实例?

Clang 使用 NamedDecl 作为基础 class 来命名更具体的声明(例如 ValueDeclTypeDecl、...)仍然主要是针对更具体的 Decl 类型的 classes。因此 Clang 不希望您直接创建 NamedDecl 并敦促您创建更具体的内容。

例如,如果您要为其创建对象的声明表示 class,则您应该创建 RecordDeclXCCRecordDecl

当然你可以通过派生自clang::NamedDecl并使派生的class的构造函数绕过这个机制public.