class OSwitch {
private:
Operator *operators[];
//int variable; <-- unused variable
public:
OSwitch() {}
~OSwitch() {}
void setOperator(int id, Operator *op) {
operators[id] = op;
}
void execute(int id) {
operators[id]->execute();
}
};
抽象基类 Operator 有几个子类。当多次调用 setOperator() 时,数组“忘记”最后一个元素。
例如
XOperator a;
YOperator b;
os.setOperator(1,a);
os.setOperator(2,b);
os.execute(1); // <- wont work
但是当声明 int 变量(或 OperatorSwitch 中的任何其他变量)时,它就可以工作。我不知道这是如何工作的。
感谢您的任何提示。