したがって、Foo
というクラスとBar
というクラスがあります。 Bar
はFoo
のインスタンスを含み、Foo
にはBar
をパラメータとして持つ関数があります。互いに#includeする2つのクラスのエラー
error: ISO C++ forbids declaration of 'Foo' with no type
私はクラスの両方をコンパイルするにはお互いに依存しているため、これは推測している。しかし、ときに私Foo
で#include "Bar.h"
は、私はBar
が上で参照されるライン上でこのエラーが出るBar
を見ることがFoo
を可能にします。これを回避する方法はありますか?
EDIT:どちらのクラスも、#ifndef
宣言の中で参照されるヘッダファイルを持っています。
お互いのクラスを組み込む必要がある場合は、プログラムデザインを忘れてしまいます。ここは何かがおかしい。 –
プリプロセッサの出力がどのようになるかを考えてください。どのように見えるべきかを解説します。これは、ヘッダーのどれに他のヘッダーを含める必要がないかを示す大きなステップです。 – hvd
クラス本体がまだ表示されていない場合は、それを宣言する必要があります。ただし、クラスのオブジェクトは前方宣言だけで使用することはできません。そのオブジェクトを持つには、クラスの本文が可視である必要があります。 – iammilind