5

error: 'func' does not name a typeクラスのメンバー関数funcがクラスを返そBうとすると、次のようになりCます。

class A {
    public:
        class B {
            public:
                C func() const {
                    ...
                }
            private:
                friend class A;
        }

        class C {
            public:
                ...
            private:
                friend class A;
        }
    private:
        ...
}

一方、funcが A のメンバー関数である場合、次はこのエラーを生成しません。

class A {
    public:
        class B {
            public:
                ...
            private:
                friend class A;
        }

        C func() const {
            ...
        }

        class C {
            public:
                ...
            private:
                friend class A;
        }
    private:
        ...
}

最初のバージョンが機能するように修正するにはどうすればよいですか?

ここで素晴らしい例を見つけました。

4

1 に答える 1

8

クラスCをクラスBの「上」に定義するか、前方宣言します。

于 2013-03-17T05:34:24.487 に答える