アプリ版:「スタンプのみでお礼する」機能のリリースについて

http://www.okweb.ne.jp/kotaeru.php3?q=541009
に関連した状況です。

ヘッダ同士がお互いにincludeしているとエラーになるそうですが、
異なる2つのclassがあって、互いにメンバ関数を呼び合うような場合、
includeはどのように行えばよいのでしょうか?
普通は、main.cppや、より上位のアプリケーション管理クラスに
書くものなのでしょうか?
試しにそうしてみたのですが、エラーを見ると、
何やらお互いに「そんなクラスは知らない」と言い合っているようなのです。

似たような質問で申し訳ないです。

A 回答 (1件)

ちょっと質問の意図から外れてしまいまうかもしれませんが、


C++ではクラスの前方宣言が可能です。前方宣言とはただ単にクラスを宣言しているだけです。利用目的は2つのクラスがお互いを引数とするメンバー関数を持っている場合に利用します。
例を以下に示します。
<SAMPLE.H>の中身 -------------------
class clsA;

class clsB
{
public:
clsB();
get(clsA a);
};

class clsA
{
public:
clsA();
set(clsB b);
};

これを応用すればこの問題は解決するような気がします。
もちろん、<SAMPLE.H>中身を別ヘッダーファイルに分けたときは
#includeする順番を気をつけてください。
説明が足りないかと思いますが、このへんで。

この回答への補足

これでいけるようです。
お手数おかけいたしました。

補足日時:2003/05/12 16:27
    • good
    • 0
この回答へのお礼

>もちろん、<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);
};

とするということですか?
ちょっと試してみます。

お礼日時:2003/05/09 23:29

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!