在Bison的语法文件中明确指定继承关系,并在代码中使用静态转换来替代动态转换。例如:
语法文件中指定继承关系:
%{ #include "myclass.h" %}
%code requires { MyClass *obj; }
%union { MyClass *myclass; int number; }
%type
%%
expression: number { $$ = new MyNumber($1); } | myclass { $$ = $1; }
%%
在代码中使用静态转换:
MyDerivedClass dobj = static_cast