C++ 如何使一个包含“私有”?

C++ 如何使一个包含“私有”?,c++,class,header,include,C++,Class,Header,Include,是否有任何方法可以在类中包含一个文件,以便它可以使用它,但不允许将该类包含到范围中的任何内容都可以使用它?为了简化,假设我在一个名为IO的类中有iostream头,我让IO能够使用cout函数编写东西,但不让任何包含IO的东西能够使用iostream头中的任何东西。这不是我想做的,但我需要弄清楚这一点,这样我就不会重复定义了。解决这个问题的常见方法是在单独的头文件/源文件对中声明IO。在头文件中,您向前声明您将需要的类,并在源文件中包含您需要的头文件。这样,头的实际内容只能在源文件中访问。该问题

是否有任何方法可以在类中包含一个文件,以便它可以使用它,但不允许将该类包含到范围中的任何内容都可以使用它?为了简化,假设我在一个名为IO的类中有iostream头,我让IO能够使用cout函数编写东西,但不让任何包含IO的东西能够使用iostream头中的任何东西。这不是我想做的,但我需要弄清楚这一点,这样我就不会重复定义了。

解决这个问题的常见方法是在单独的头文件/源文件对中声明IO。在头文件中,您向前声明您将需要的类,并在源文件中包含您需要的头文件。这样,头的实际内容只能在源文件中访问。

该问题的常见解决方案是在单独的头/源文件对中声明IO。在头文件中,您向前声明您将需要的类,并在源文件中包含您需要的头文件。这样,标题的实际内容只能在源文件中访问。

是的,您可以将其包括在cpp中,而不是h中


当您将IO.h包含在其他未包含的文件中时,请查看该概念。

是的,您可以将其包含在cpp中,而不是h中

当您在未包含的其他文件中包含IO.h时,请查看该概念。

如果您在源文件.cpp中包含文件,则任何其他文件都不会看到该文件。如果您在源文件.cpp中包含文件,则任何其他文件都不会看到该文件。
// IO.h
// note the lack of #include <iostream>

class IO
{
     // IO stuff...
     void f();
};
// IO.cpp
#include "IO.h"
#include <iostream>

IO::void f()
{
    std::cout << "Hello world!" << '\n';
}