#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
为什么会有“类DNS;"?写这篇文章的目的是什么?(如果你需要更多的代码来理解它的需要\目的,请告诉我)
发布于 2015-11-10 09:45:03
我们需要更多的代码,特别是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将在以后定义。
https://stackoverflow.com/questions/33636157
复制相似问题