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

标签 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

为什么会有“类 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 类型的参数、变量等时不要 panic 。我现在有信心稍后会定义 DNS。

关于c++ 在另一个类头文件中声明一个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33636157/

相关文章:

c++ - C++ header 差异

c - header 命名约定

c - 在 header 中发现函数的隐式声明?

c++ - 呈现多属性 TextView

c++ - Vector.h 头文件(使用 Stanford C 库)已损坏或无法使用

arrays - Arduino Sketch - 头文件中的对象不包含任何值

c++ - 将使用双向 popen() 的 C++ 代码移植到 POSIX 的最佳方法

c# - Xna (C#) 和 C++ 的网络?

c++ - 为什么有些包含文件只驻留在 tr1 中?

c++ - 为什么 std::vector 是连续的?