C++ 类是否可以自引用?

C++ 类是否可以自引用?,c++,C++,**如果一个结构可以是自引用的。像 struct list { struct list *next; }; 因为类和结构之间没有区别,除了默认的访问说明符。 那么是否可以编写一个类 class list { class list *next; }; 或者,是否有任何不同的语法来获取自引用类。? 如果是,则如何进行?***是,但您只能自引用指针或类(或结构)的引用 典型的方法是: class list { list* next; } 如果需要两个类相互引用,只需向前声明这

**如果一个结构可以是自引用的。像

struct list
{
     struct list *next;
};
因为类和结构之间没有区别,除了默认的访问说明符。 那么是否可以编写一个类

class list
{
     class list *next;
};
或者,是否有任何不同的语法来获取自引用类。?
如果是,则如何进行?***

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

典型的方法是:

class list { list* next; }
如果需要两个类相互引用,只需向前声明这些类,如下所示:

class list;
class node;

class list { node* first; }
class node { list* parentList; node* next; }

当您没有完整声明(只是一个正向声明)时,您只能声明指针或引用。这是因为编译器总是知道指针或引用的大小,但不知道类或结构的大小,除非它有完整的声明。

正如你提到的,除了默认访问修饰符之外,C++中的类和结构之间绝对没有区别。C++中,至少可以在99.9%的情况下,避免在变量名前键入'struct'或'class',如:“class list{list*next;};”是的,必须输入“struct list*next;”只不过是C语言。在C++中,你总是只做“列表*NeXT”,+ 1 -尼斯-但最后一句应该结束“类定义”(不声明:)+ 1费萨尔/卢。“X类;”是“完整声明”(类型不完整)。C不调用“struct list{int d;};”定义,而是将其称为完整类型的声明。C++通过调用它定义了一个定义。很好的回答,当然不是这样。