如果我的头文件已经使用 std::cout,则在哪里添加 #include <iostream>

UPi*_*nar 2 c++

我对在项目中添加的位置不太了解#include <iostream>


这是LinkedList.h,有一个成员函数 declarationprint_list()

#include <iostream>

class LinkedList {
public:
    void print_list() const;
};
Run Code Online (Sandbox Code Playgroud)

这就是LinkedList.cpp,有成员函数的定义。

#include "LinkedList.h"

void LinkedList::print_list() const
{
    // code prints something
    std::cout << "There is no element in list\n";
}
Run Code Online (Sandbox Code Playgroud)

这是main.cpp

#include <iostream>
#include <LinkedList.h>

int main()
{
    // code
}
Run Code Online (Sandbox Code Playgroud)

问题是,我确实认为(可能是错误的)只有main.cpp文件必须使用#include <iostream>.

有人可以解释如何处理这种情况以及在哪里添加#include <iostream>

use*_*522 6

将头文件包含在每个直接使用头文件中的内容的文件中。以这种方式多次包含它是完全可以的。标准库头文件必须能够处理它,并且任何其他头文件也应该设计为支持它。(这就是头部防护的用途。)

这样,您如何重新组织包含或代码就无关紧要了。每个文件始终包含其所需内容,因此您始终安全。在不直接使用标头中某些内容的文件中添加包含内容变得没有必要。

因此,就您而言,仅包含<iostream>其中LinkedList.cpp实际使用的std::cout. 包含的顺序并不真正相关,主要是风格问题。

(这只是一个一般准则,但如果您不做任何异常的事情,那么应该基本上没问题。因为#include只是简单地包含源代码,所以肯定会发生特殊情况。)