-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"ますか?そのようなデザインは悪いようです。

この2つのオブジェクトの楽器とモデルを設計して、お互いを認識し、使用できるようにするにはどうすればよいですか?

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 に答える