成员相互指向的类[重复]

Posted

技术标签:

【中文标题】成员相互指向的类[重复]【英文标题】:Classes whose members pointing to each other [duplicate] 【发布时间】:2014-05-26 06:11:26 【问题描述】:

有一个Square 指向四个Faces。每个Face 也指向两个Squares。由于首先定义了其中一个类,因此编译器会抱怨。那么我该如何解决这个问题呢?使用指针的目的是,如果我对面部进行更改,则不需要对正方形进行任何更改。在这种情况下,这将自动完成。

class Square

    Face* faces[4];
;

class Face

    Square* squares[2]
;

【问题讨论】:

可以转发声明一个类的名字 class Face; 在顶部 【参考方案1】:

只需转发声明一个类;

class Face;
class Square
 Face* faces[4];
;

class Face
 Square* squares[2]
;

注意:通过前向声明,您只能使用指针/引用(就像您现在使用的那样)。但是您不能在Square 中使用Face faces[4];。因为它是声明,而不是定义。要使用对象,编译器必须知道对象的定义。

【讨论】:

以上是关于成员相互指向的类[重复]的主要内容,如果未能解决你的问题,请参考以下文章

指向具有私有构造函数的类的类成员的指针

指向该类的类指针成员:未解析的外部符号

如何创建一个存储指向成员函数的指针的类 (C++)

访问包含在数组中的指向类对象的类成员函数的正确语法是啥?

单例与Java中具有静态成员和方法的类[重复]

指向函数对象的成员函数指针