一个班级可以自我引用吗?

4 c++

**如果结构可以是自我指涉的.喜欢

struct list
{
     struct list *next;
};
Run Code Online (Sandbox Code Playgroud)

因为除了默认访问说明符之外,类和结构之间没有区别.那么可以写一堂课......

class list
{
     class list *next;
};
Run Code Online (Sandbox Code Playgroud)

或者可能有任何不同的语法来获得自我指涉类.如果是的话怎么样?**

Lou*_*nco 13

是的,但您只能自引用指针或对类(或结构)的引用

典型的方法是:

class list { list* next; }
Run Code Online (Sandbox Code Playgroud)

如果你需要两个相互引用的类,你只需要转发声明类,如下所示:

class list;
class node;

class list { node* first; }
class node { list* parentList; node* next; }
Run Code Online (Sandbox Code Playgroud)

如果没有完整声明(只是前向声明),则只能声明指针或引用.这是因为编译器总是知道指针或引用的大小,但不知道类或结构的大小,除非它具有完整的声明.

  • +1 - 很好 - 但最后一句应该以'class definition'结尾(不是声明:) (2认同)