Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/152.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在C++;?_C++_Class_Friend - Fatal编程技术网

C++ 如何在C++;?

C++ 如何在C++;?,c++,class,friend,C++,Class,Friend,当类B的成员函数func尝试返回类C时,我得到一个错误:“func”没有命名类型: class A { public: class B { public: C func() const { ... } private: friend class A; } c

当类
B
的成员函数
func
尝试返回类
C
时,我得到一个
错误:“func”没有命名类型:

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:
        ...
}
如何修复它以使第一个版本正常工作


我发现了一个很好的例子。

在B类之上定义C类,或者向前声明它。

为什么要在另一个类中声明类?非常感谢您提供了关于向前声明的提示!我仍然很好奇,为什么在第二个例子中,你可以不做转发声明就可以逃之夭夭。。。