c ++在另一个类头文件中声明一个类

时间:2015-11-10 17:39:09

标签: c++ header-files

#ifndef PC
#define PC
#include <iostream>
#include <string>
#include "../include/worm.h"
#include "../include/dns.h"

class DNS; // Forward decleration

class PC
{
....(there is all the declration here)  
};

#endif

为什么会出现&#34;类DNS;&#34;? 写这个的目的是什么?(如果你需要更多代码来了解需要\目的让我知道)

1 个答案:

答案 0 :(得分:4)

我们需要更多代码,特别是DNS的头文件,但我假设dns.h还包括pc.h.当你有两个相互包含的头文件时,每个头文件必须向前声明另一个类。

但是,如果dns.h不包含pc.h,那么您不需要前向声明。

我对它的理解涉及循环依赖。想象一下,我正在浏览dns.h,我看到了pc.h.我需要知道你所依赖的东西,所以现在我开始通过pc.h.我现在看到dns.h,但我就在那里,所以我继续通过pc.h.如果你在类PC中使用DNS,我怎么知道DNS是什么?在我发表课堂宣言之前,我没有走过dns.h.

解决方案是在pc.h中声明该类。这给了我足够的信息,知道DNS是某种类的类,并且当我看到DNS类型的参数,变量等时不要惊慌失措。我现在有信心DNS将在稍后定义。