C/C++では、呼び出し元関数が呼び出し元に表示されている場合のみ、呼び出し元関数が呼び出し先関数を呼び出します。それ以外の場合は前方宣言を使用します。ここで関数はC++で使用する前に定義します。
は、上記のコードはうまく動作します
class A
{
public:
void foo()
{
bar();
}
void bar()
{
//...
}
};
int main()
{
A a;
a.foo();
}
、私の問題です。しかし、foo
はbar
と呼ばれ、foo
の前にbar
の定義を入れなかったか、またはbar
を先に宣言したのですが、foo
のbar
への呼び出しはどうすればできますか?コンパイラはどのようにしてbar
を見つけることができますか?
関数の定義をクラスの本体から移動すると、クラス本体の関数宣言はforward-declとして機能します。 – Alcott
はい。そしてそれらを両方向に動かすと、それらを任意の順序で定義することができます。 –