0

これが状況です。2 つの異なるファイル内に 2 つのクラスがあります。

A.cpp:

#include "B.h" 
A::A(){
B foo; //B doesn't name a type
}

B.cpp:

Class B{
//code
};

Aのコンストラクター内でBのオブジェクトを正しく構築するにはどうすればよいですか?(スコープの問題)私は試しました

B::B foo //wrong

また、上記のようにクラス B のオブジェクトを直接構築できない理由として、Bh が含まれています。どうもありがとうございました

4

2 に答える 2

3

のクラス定義をBヘッダー ファイルに入れます。

bh:

#ifndef H_B_CLASS
#define H_B_CLASS

class B
{
    // member declarations
};

#endif

a.cpp:

#include "a.h"
#include "b.h"

A::A() { B foo; /* ... */ }

b.cpp:

#include "b.h"

// B's member definitions

classBに何もない場合は、省略b.cppしてクラス定義全体をヘッダー ファイルに入れることができます。

于 2012-09-10T00:19:27.080 に答える
0

あなたBが言うように、完全に空の場合、利用可能なパブリックデフォルトコンストラクターはありません。少なくともB()の public メンバーとして定義する必要がありclass Bます。そうしないと、誰も作成できません。

于 2012-09-10T00:24:00.897 に答える