我有一个bison / flex C ++解析器,它有一个我作为其某些规则的返回类型编写的类(在解析器文件中定义,如%type <myClass> expr
)。然后(通常)存储类实例并在以后打印出来。当类实例从一个规则传递到另一个规则时,它会丢失它的所有成员的值,就像它被实例化但未完全复制一样。我有一个=运算符和为该类定义的复制构造函数。我也试过像这样手动复制成员:
expr: //Returns myClass
atomicexpr { //Also returns myClass
$$ = driver.returnClass($1)
$$.member1 = driver.returnClass($1).member1
$$.member2 = driver.returnClass($1).member2
}
请注意,我使用的是变体而不是联合,如bison手册中的C ++示例所示。
我需要做些什么才能让类正确实例化?