假设我有一个处理一些数据的类:

class SomeClass
{
  public:
    void SetData(IData*);
    void ProcessData(void);
}


在调用ProcessData()之前,该类需要设置数据。如何执行这种依赖性?如果在传递任何数据之前调用ProcessData(),我可能会返回错误代码或引发异常。发出异常的声音如何?

附加信息
一些答案建议将IData传递给构造函数或ProcessData()。这些是正确的答案。我之所以不这样做的原因是,这是GUI系统的一部分。用户可以在任何时间点将新数据加载到SomeClass并对其进行修改,因此在创建SomeClass的时间内,数据可能不可用。

(是的,我可以使用更好的设计来避免这个问题,但是我的老板想在屏幕上看到结果,因此我不得不在好的设计和视觉效果之间做出折衷)。

最佳答案

使SomeClass构造函数需要IData并删除SetData。同样,您也可以将IData传递给ProcessData

08-05 01:47