我有一个关于包含标题的快速问题 我想要构建两个类,它们都拥有指向另一个类的指针。 它们中的每一个都在不同的标题中。 如何以我不会收到标识符错误的方式包含标题
Client.h
#ifndef VIEWABLE_H
#define VIEWABLE_H
#include "Client.h"
class Client{
Client* client;
}
#endif
Viewable.h
{{1}}
这段代码给了我标识符错误,因为有双重定义。 我理解为什么,我怎么能避免这个错误?
答案 0 :(得分:0)
使用其中的两个类创建一个新的头文件:
#ifndef BOTH_H
#define BOTH_H
class Client;
class Viewable;
#endif
将every.h包含在每个标题中。
答案 1 :(得分:0)
如何包含已包含当前标题的其他标题
你做不到。没有办法实现这一目标。它会创建一个无限递归的包含(如果你使用标题保护会过早终止)。
我该如何避免这个错误?
您需要更改您的程序,以便没有循环依赖关系,以便您可以删除其中一个包含。
实际上,在示例程序的情况下,这两个类实际上都不依赖于另一个类的定义,因此两者都不需要包含另一个类。用声明替换包含:
class Viewable;
class Client {
Viewable *viewptr;
...
class Client;
class Viewable {
Client* client;