我有一个基类,它定义了所有子类共享的一些公共状态,并且子类可能能够添加更具体的状态。由于无法在C ++中扩展枚举,因此我有以下代码:
class AbstractMachine
{
public:
enum State {
AbstractMachineState1,
AbstractMachineState2,
AbstractMachineState3
};
virtual enum State state() const = 0;
// ..
};
class Machine : public AbstractMachine
{
public:
// more specific states related to Machine
enum MachineState {
MachineState1,
MachineState2,
MachineState3
};
virtual enum State state() const = 0;
virtual enum MachineState machineState() const = 0;
// ..
};
class SpecificMachine : public Machine
{
public:
// more specific states related to SpecificMachine
enum SpecificMachineState {
SpecificMachineState1,
SpecificMachineState2,
SpecificMachineState3
};
SpecificMachine();
virtual enum State state() const;
virtual enum MachineState machineState() const;
virtual enum SpecificMachineState specificMachineState() const;
// ..
};
客户端代码应该能够处理3个抽象级别,但是,为了获取我需要调用的任何SpecificMachine
的状态,
state()
machineState()
specificMachineState()
如何在一次调用SpecificMachine
的情况下使任何state()
的状态?
在AbstractMachine
枚举中添加所有状态是可行的,但我不希望每次我们需要添加新的SpecificMachine
时都要修改基类。
谢谢。