- ベストアンサー
ヘッダファイルのインクルードその2
http://www.okweb.ne.jp/kotaeru.php3?q=541009 に関連した状況です。 ヘッダ同士がお互いにincludeしているとエラーになるそうですが、 異なる2つのclassがあって、互いにメンバ関数を呼び合うような場合、 includeはどのように行えばよいのでしょうか? 普通は、main.cppや、より上位のアプリケーション管理クラスに 書くものなのでしょうか? 試しにそうしてみたのですが、エラーを見ると、 何やらお互いに「そんなクラスは知らない」と言い合っているようなのです。 似たような質問で申し訳ないです。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
ちょっと質問の意図から外れてしまいまうかもしれませんが、 C++ではクラスの前方宣言が可能です。前方宣言とはただ単にクラスを宣言しているだけです。利用目的は2つのクラスがお互いを引数とするメンバー関数を持っている場合に利用します。 例を以下に示します。 <SAMPLE.H>の中身 ------------------- class clsA; class clsB { public: clsB(); get(clsA a); }; class clsA { public: clsA(); set(clsB b); }; これを応用すればこの問題は解決するような気がします。 もちろん、<SAMPLE.H>中身を別ヘッダーファイルに分けたときは #includeする順番を気をつけてください。 説明が足りないかと思いますが、このへんで。
お礼
>もちろん、<SAMPLE.H>中身を別ヘッダーファイルに分けたときは >#includeする順番を気をつけてください。 これは、 <clsA.H>の中身 ------------------- class clsB; class clsA { public: clsA(); set(clsB b); }; <clsB.H>の中身 ------------------- class clsA; class clsB { public: clsB(); set(clsA a); }; とするということですか? ちょっと試してみます。
補足
これでいけるようです。 お手数おかけいたしました。