gpt4 book ai didi

c++ - 我可以在另一个 .hpp 文件中包含多个 .hpp 文件吗?

转载 作者:行者123 更新时间:2023-12-02 09:54:47 26 4
gpt4 key购买 nike

我目前正在做一个 C++ 项目。
简而言之,我有 3 个类和一个 main.cpp 文件。

1) 列表类//使用一个 vector
2) 堆类
3) 树类//BST

为了正确组织自己,我将每个类分成单独的文件,即 .hpp 和 .cpp 文件。

当然,要访问 main.cpp 文件中每个类中的所有函数,我#included了所有三个 .hpp 文件。

直到我在“heap.hpp”和“Tree.hpp”中#include 了“List.hpp”文件之前,一切都很好地工作。

奇怪的是,当我只将“List.hpp”#include 到一个单独的头文件(如“heap.hpp”)中时,并没有出现错误。

但是当我出于某种原因将“List.hpp”#included 到两者中时,过去有效的方法不再有效。

只有依赖“List”作为参数的方法不再起作用(它们只是不返​​回任何东西)。

我不确定为什么会这样。这是第二次发生在我身上,我想知道为什么,这样我以后就不会犯错了。

最佳答案

简单的规则:

所有文件,无论是 *.cpp 或 *.h 文件,都应包括编译此文件本身所需的所有其他头文件。

如果一个 *.h 文件需要一个定义,来自另一个 *.h 文件,所以你应该直接从这里包含它。

如果你不这样做,你必须处理从第三个文件中包含头文件的正确顺序,这可能会令人沮丧。

但是您会看到随着项目的增长,您通常不会再使用包含甚至不包含所有需要的依赖项但编译良好的文件,因为之前包含的其他文件已经包含了您需要的文件。

有一个助手来管理这样的事情:
include what you use

还有一个基本的:使用包括 guard ,如 #pragma once或好旧的风格#ifndef XYZ #define XYZ #endif

关于c++ - 我可以在另一个 .hpp 文件中包含多个 .hpp 文件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61153609/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com