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