【问题标题】:C++ linking 2 classes together howC ++如何将2个类链接在一起
【发布时间】:2011-07-26 12:15:07
【问题描述】:

这可能有点微不足道,但我对这样的问题感到困惑。

我想创建两个类 Class1、Class2。两个类都应该包含一个字段,该字段包含指向另一个类的实例的指针。所以它们应该是交叉链接的。

如果我这样做,那么编译器会报错: - ISO C++ 禁止声明没有类型的“Class1” - 预期的 ';' * 令牌之前

请帮忙:)

文件:class1.h

#ifndef CLASS1_H
#define CLASS1_H

#include "class2.h"

class Class1 {
public:
    Class1();
private:
    Class2* link;
}

#endif

文件:class2.h

#ifndef CLASS2_H
#define CLASS2_H

#include "class1.h"

class Class2 {
public:
    Class2();
private:
    Class1* link;
}

#endif

【问题讨论】:

    标签: c++ oop pointers


    【解决方案1】:

    在使用之前添加类声明(而不是定义)。例如,您可以:

    #ifndef CLASS1_H
    #define CLASS1_H
    
    class Class2;
    
    class Class1
    {
    public:
        Class1();
    private:
        Class2* link;
    }
    
    #endif
    

    对 Class2.h 做同样的事情。

    【讨论】:

      【解决方案2】:

      问题是循环依赖;每个标头都试图包含另一个标头,这是不可能的。

      您不需要每个类的完整定义来声明指向它的指针;您可以用前向声明(class Class1;class Class2;)替换每个 #include 行,然后一切都应该顺利编译。

      【讨论】:

      • Aaaa 我记得这样的事情是可能的。非常感谢
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-08-13
      • 2012-02-16
      • 2021-05-26
      • 1970-01-01
      • 2011-05-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多