3つのクラスで構造を設定するのは難しいです。私はインクルード/フォワード宣言についてはわかりません。フォワード宣言とグローバル名前空間宣言
以下のコードは、inclino.hに名前空間とenumを追加するまでコンパイルされます。私は
が// InclinoReading.h
class Inclino;
class InclinoMeasure;
class InclinoReading
{
InclinoMeasure *m_inclino;
void f(inclino::a a);
}
構造をいInclinoMeasure.h
Inclino.h
// Inclino.h
#include "InclinoMeasure.h"
#include "InclinoReading.h"
namespace inclino {
enum a{a1, a2}
}
class Inclino
{
list<InclinoMeasure*> m_measures;
void f(inclino::a a);
}
InclinoMeasure.h
// InclinoMeasure.h
#include "InclinoReading.h"
class Inclino;
class InclinoMeasure
{
Inclino *m_inclino;
list<InclinoReading*> m_readings;
void f(inclino::a a);
}
InclinoReading.hから "inclinoが宣言されていない" 受け取ります正しい ?他のクラスのenumにどうやってアクセスできますか?
ありがとうございます。
編集:私はネームスペースの問題を3つのクラスを含む新しいファイルに入れて修正しました。しかし、私はインクルード/フォワード宣言を誤用しているようです。
ありがとう、それはenumで動作しますが、InclinoMeasure.cpp(Inclinoメソッドを呼び出すと)から "Inclinoの型InClino 'の無効な使用があります。私の問題は、私が考える前方宣言の詳細です。 – Pierma
'InclinoMeasure.cpp'に' Inclino.h'を含めましたか?そうでない場合、これは 'エラー:不完全な型の無効な使用 'クラスInclino'を引き起こす可能性があります。また、ヘッダーファイルにヘッダーガードがあることを確認する必要があります。さもなければ、 'InclinoMeasure.cpp'に' Inclino.h'をインクルードした後、 'class InclinoMeasure''の' error:redefinition'というエラーが発生するかもしれません。 –
2つのファイル+各クラスファイルの2つの前方宣言を含めると、すべて問題はないようです。プログラムは期待通りに動作しますが、それは良いコードですか? (そして、私はヘッダーガードを持っています)。あなたの助けをもう一度ありがとう。 – Pierma