如何在函数内部定义类以便它们彼此“了解”?这是我正在努力理解的一个非常愚蠢的版本。我想做点什么:
void foo () {
struct A {
static void bar () {
B::hmm();
}
};
struct B {
static void hmm () {
A::bar();
}
}
}
这不起作用,因为A :: bar()对B还没有任何了解。在函数之外,我可以推迟A :: bar()的定义,直到声明B为止。类似的东西:
void foo () {
struct A {
static void bar ();
};
struct B {
static void hmm () {
A::bar();
}
}
void A::bar () {
B::hmm();
}
}
但这似乎不适用于函数内部。
代替一些巧妙的范围宣言使这一切都有效,我也欢迎一个明确的答案,说这在C ++中是不可能的(请参考参考资料)。
我知道还有其他方法可以解决这个问题(例如,在foo之外声明类),所以我不是在寻找关于如何做类似事情的答案......
答案 0 :(得分:3)
你没有。
必须在类定义中定义本地类的成员函数。
因为A::bar()
和B::hmm()
的定义是相互依赖的,并且因为成员函数不能在类定义之外进行前向声明,所以无法对定义进行排序以使其可以正常工作。 / p>
(你说你不是在寻找解决方法,但我会说,在我看来,在函数定义中定义任何远程复杂的类,或多或少的多个类,会妨碍代码的可读性并且是一个坏的想法。)