2014-10-19 41 views
1

在Swift中,我正在实现一个状态机,其中当前状态由一个枚举值表示。我将不同类型的额外数据与每个枚举值相关联。有没有办法在C++中做到这一点?我只能考虑使用某些State类的继承,但后来我不得不使用某种反射并将State对象转换为获取额外的关联数据。如何在C++中实现Swift枚举关联值?

+1

枚举和地图怎么样?还有一些类似boost :: variant的数据 – 2014-10-19 23:25:40

回答

1

一种方法是拥有一个代表枚举的基类,以及每种情况下的子类(每个类都有用于该情况的关联值的变量)。基类应该是多态的(至少有一个虚拟方法;可能是一个虚拟析构函数),因此可以通过使用dynamic_cast对每个案例进行测试来解构“enum”。