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

c++ declaring a class in another class header file

本文关键字:声明 一个 另一个 文件 C++      更新时间:2023-10-16
#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;"?写这个的目的是什么?(如果您需要更多代码来了解需求\目的,请告诉我(

我们需要更多的代码,特别是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。

相关文章: