関数内でクラスを定義して、お互いを「認識」するにはどうすればよいですか? これは、私が理解しようとしているものの大幅に縮小されたバージョンです。私は次のようなことをしたいと思います:
void foo () {
struct A {
static void bar () {
B::hmm();
}
};
struct B {
static void hmm () {
A::bar();
}
}
}
A::bar() はまだ B について何も知らないため、これは機能しません。関数の外では、B が宣言されるまで A::bar() の定義を延期できます。何かのようなもの:
void foo () {
struct A {
static void bar ();
};
struct B {
static void hmm () {
A::bar();
}
}
void A::bar () {
B::hmm();
}
}
しかし、それは関数内では機能しないようです。
これをすべて機能させる巧妙なスコープ宣言の代わりに、これは C++ では不可能であるという明確な回答も歓迎します (参照してください)。
これを回避する他の方法があることは知っています (たとえば、foo の外でクラスを宣言する) ので、同様のことを行う方法についての回答は探していません...