这可能有点小事,但我对这个问题感到困惑。
我想创建两个类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
答案 0 :(得分:3)
在使用之前添加类声明(与定义相对)。例如,您可以:
#ifndef CLASS1_H
#define CLASS1_H
class Class2;
class Class1
{
public:
Class1();
private:
Class2* link;
}
#endif
并为Class2.h做同样的事情。
答案 1 :(得分:2)
问题是循环依赖;每个标题都试图包含另一个,这是不可能的。
您不需要每个类的完整定义来声明指向它的指针;您可以使用转发声明(#include
和class Class1;
)替换每个class Class2;
行,然后一切都应该愉快地编译。