-1

我有:

// file model.h
#include "instrument.h"
class model
{
    // A function which uses instruments and returns double.
    double value(Instrument instruments);
}

现在在文件 instrument.h

// file instrument.h
class Instrument
{
    // This function needs to use model.
    double value2(model* md);
}

现在在文件中instrument.h,我应该使用#include "model.h"吗?这样的设计似乎很糟糕。

我如何设计这两个对象仪器和模型,以便他们知道并可以相互使用?

4

1 回答 1

4

前向声明:

class Instrument;
class model
{
  // function which uses instruments and returns double
  double value(Instrument instruments);
};

//...

class model;
class Instrument
{
  // function needs to use model
  double value2(model* md); 
} 

如果您的类不包含其他类型的数据成员,则不需要该类型的完整定义。例如,如果您有一个成员指针,函数返回值,或者像您的情况一样,参数。

另外,你的直觉是正确的。您应该将include头文件中的 s 保持在最低限度。标头应该是自包含的,但不能有不必要的标头。

于 2012-09-19T14:32:51.203 回答