我在调用具有抽象类的左值的方法时遇到问题。类定义是:
class SimulatorSequenceItemBase {
public:
SimulatorSequenceItemBase();
virtual ~SimulatorSequenceItemBase();
virtual uint32_t GetResult(uint32_t p_nSite) = 0;
virtual bool MoveNext(SimulatorSequenceItemBase& p_rNext) = 0;
}
SimulatorSequenceItemBase 有多个子类。for 循环中有序列(for 循环)和 for 项。
我想遍历序列并计算步骤,使用:
uint32_t nI = 0;
SimulatorSequenceItemBase root = forSeq; // forSeq is an instance of a subclass of SimulatorSequenceItemBase
while(root.MoveNext(root))
{
++nI;
std::cout << root.GetResult(0);
}
根最初引用根,每次调用 MoveNext 时,都应将引用调整为下一个元素。
上面提到的代码不起作用,因为根无法分配,因为根的类型是抽象的。但是,如果我将 root 设为指针,则无法在 MoveNext 中更改该值。
我怎样才能解决这个问题?更改任何代码都可以,但想法应该保持不变。