如果我需要在我的标题中包含另一个标题,并且我打算在我的CPP文件中使用它,那么我是否应该将其包含在那里以便于阅读?

时间:2016-07-27 17:57:12

标签: c++

是的,所以我会尽力解释我的问题。基本上在我的一个头文件中我需要使用一个类,显然要做到这一点,我必须在当前的那个包含该类的标题。我只是想,因为我打算稍后在线创建这个类的新实例,我是否还应该将它包含在.cpp文件中以帮助提高可读性?我知道我不需要,但这样做有意义吗?或者我只是疯了?

示例A,头文件:

include "APIManager.h"
class Environment
{
public:
    static void Initialize();
private:
    APIManager apiManager;
};

示例A,源文件:

include "Environment.h"
// Should I include "APIManager.h" here too?
void Environment::Initialize()
{

}

试着在这里寻找它,但我不确定如何表达它,所以如果已经被问过这样的道歉。

另外,一般来说,您应该在该类的标题中包含该类源所需的头文件吗?感谢。

4 个答案:

答案 0 :(得分:2)

这基本上是一个风格问题,但是:

不,你不应该把它包含在cpp 标题中。它过于冗长,没有人这样做。

答案 1 :(得分:2)

如果源文件是Environment.cpp,你正在实现在Environment.h中声明的内容,那么不,你不应该重新包含它。

另一方面,如果源文件是SomeOtherFile.cpp,您只需使用来自Environment.h的声明,并且您将单独使用API​​Manager.h中的声明,而不考虑它们作为环境的一部分使用.h,那么是的,你应该。您不希望将来的更改从SomeOtherFile.cpp中删除#include <Environment.h>以意外破坏它。

换句话说,如果SomeOtherFile.cpp直接依赖于APIManager.h,那么该依赖应该通过#include直接表达。

答案 2 :(得分:0)

我不会,除非#include "APIManager.h"可能不在标题中。

<string>可能包含在<iostream>中,但即使您的图书馆包含<string>,您也应该包括<iostream>,并使用How can i get the user id from facebook url and get the basic info ?

答案 3 :(得分:0)

在需要的地方加入标题。

如果您的类定义包含您所包含的标头中定义的对象,则应将它们包含在头文件中。如果您只使用cpp中标题的内容,则将其包含在cpp。

如果file.cpp还包含file.h,则永远不要在file.h和file.cpp中包含相同的外部头。