我正在使用Facebook的libgraphqlparser库与C++中的GraphQL AST进行交互。我正在尝试使用以下代码来确定type
的特定FieldDefinition
,它可以是ListType
,NamedType
等:
bool isListType (FieldDefinition * fieldDef) {
if (ListType* lt = dynamic_cast<ListType*>(fieldDef->getType())) {
return true;
}
return false;
}
但是,
fieldDef
上存在以下错误:the operand of a pointer dynamic_cast must be a pointer to a complete class type
还有另一种方法来测试
getType
返回的特定类吗? 最佳答案
您可以定义一个覆盖AstVisitor
,visitNamedType
和visitListType
的visitNonNullType
子类,并记录这三个方法中的哪个首先被调用以进行类型检查。 (请参阅AstVisitor.h
。)请注意ListType
和NonNullType
包含其他类型!您也可以将访问各种类型的逻辑正确地放在访问者中,如果可能的话,这可能会更加方便。