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

时间:2009-06-20 14:36:20

标签: c++

**如果结构可以是自我指涉的。像

struct list
{
     struct list *next;
};

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

class list
{
     class list *next;
};

或者可能是有任何不同的语法来获得自引用类。 如果是,那怎么样?**

1 个答案:

答案 0 :(得分:13)

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

典型的方法是:

class list { list* next; }

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

class list;
class node;

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

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

相关问题