-1

如何在函数内部定义类,以便它们“了解”彼此?这是我试图理解的一个非常愚蠢的版本。我想做类似的事情:

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 之外声明类),所以我不是在寻找关于如何做类似事情的答案......

4

1 回答 1

3

你没有。

局部类的成员函数必须在类定义中定义。

因为 和 的定义A::bar()B::hmm()相互依赖的,并且因为成员函数不能在类定义之外进行前向声明,所以无法对定义进行排序以使其起作用。

(您说您不是在寻找解决方法,但无论如何我会说,在我看来,在函数定义中定义任何远程复杂的类,或多或少的多个类,会妨碍代码的可读性,并且是一个坏主意。)

于 2010-12-16T05:55:27.153 回答