【问题标题】:I can't have two classes pointing at each other我不能让两个类互相指向
【发布时间】:2021-09-15 00:43:41
【问题描述】:

这段代码

class x {
    y* ptrY;
};
class y {
    x* ptrX;
};
int main() {

}

给我这些无用的错误

我是在做不允许的事情还是有办法解决这个问题

【问题讨论】:

    标签: c++ class pointers syntax compiler-errors


    【解决方案1】:

    x被定义时,y是未知的,所以x不能被正确编译。解决此问题的一种方法是使用前向声明 - 本质上,您将声明“y 是一个类,我稍后会定义它”:

    class y; // Forward declaration of y
    
    class x {
        y* ptrY;
    };
    class y {
        x* ptrX;
    };
    int main() {
    }
    

    【讨论】:

    • 其实“当x被定义时……”比“当x被声明时……”更准确。您的样本前面可以声明 x(即您所描述的“前向声明)。问题是 y 必须在定义 x 之前声明,并且 x 必须在之前声明y 已定义。
    • @Peter 措辞更好,谢谢。已编辑。
    猜你喜欢
    • 2015-03-11
    • 2013-07-09
    • 2019-08-26
    • 1970-01-01
    • 2015-04-20
    • 1970-01-01
    • 2021-12-19
    • 2014-06-18
    • 2014-12-24
    相关资源
    最近更新 更多