3

A.hppファイルには、Bクラスのポインターを持つ構造があります

struct state
{
    B  *b;
};

A.hpp ファイルに前方宣言を追加し、B.hpp ファイルを A.cpp ファイルに含めました

//A.hpp
class B

B.hpp ファイルでは、関数は、関数の引数として A.hpp で宣言された状態を使用します。

bool function_in_b(state *s)

また、B.hpp ファイルに A の前方宣言を追加し、B.cpp ファイルに A、A.hpp のヘッダー ファイルを追加しました。

//B.hpp
class A

すべてのヘッダー ファイルにはヘッダー ガードがあります。コンパイルしようとすると、A.hpp で宣言されている「状態」が見つかりません。したがって、マッチング関数が見つからず、候補が

bool function_in_b(int *) 

この問題を解決するにはどうすればよいですか?

4

2 に答える 2

2

B.hpp、あなたは前方宣言されたと言いますがA、そうではありませんstate-ですから、最初に見たとき、それfunction_in_b(state *s)は何であるかを知りませんstateA.hppあなたがそれに含める時までにB.cpp手遅れです。で前方宣言stateする必要があります。B.hpp

struct state;

bool function_in_b(state *s);
于 2012-04-11T21:23:22.410 に答える
1

B.hppファイルで、の宣言の前に、次のタイプfunction_in_b(state *)を前方宣言します。state

struct state;
于 2012-04-11T21:23:13.563 に答える