C ++将2个类连接起来如何

时间:2011-03-30 23:40:42

标签: c++ oop pointers

这可能有点小事,但我对这个问题感到困惑。

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

如果我这样做,那么我从compiller那里得到一个错误:   - ISO C ++禁止声明'Class1'没有类型   - 预期';'在*令牌之前

请帮助:)

file:class1.h

#ifndef CLASS1_H
#define CLASS1_H

#include "class2.h"

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

#endif

file:class2.h

#ifndef CLASS2_H
#define CLASS2_H

#include "class1.h"

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

#endif

2 个答案:

答案 0 :(得分:3)

在使用之前添加类声明(与定义相对)。例如,您可以:

#ifndef CLASS1_H
#define CLASS1_H

class Class2;

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

#endif

并为Class2.h做同样的事情。

答案 1 :(得分:2)

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

您不需要每个类的完整定义来声明指向它的指针;您可以使用转发声明(#includeclass Class1;)替换每个class Class2;行,然后一切都应该愉快地编译。