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

c++ declaring a class in another class header file

#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

为什么会有"class DNS;"? 写那个的目的是什么?(如果你需要更多的代码来理解 need\purpose 让我知道)

我们需要更多代码,特别是 DNS 的头文件,但我假设 dns.h 还包括 pc.h。当您有两个相互包含的头文件时,它们必须各自转发声明另一个 class.

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

我的理解涉及循环依赖。想象一下,我正在穿过 dns.h,我看到了 pc.h。我需要知道你依赖什么,所以现在我开始 pc.h。我现在看到了 dns.h,但我就在那里,所以我一直在浏览 pc.h。如果您在 class PC 内部使用 DNS,我怎么知道 DNS 是什么?在我点击 class 声明之前,我停止浏览 dns.h。

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