1

有什么方法可以在一个类中包含一个文件,以便它可以使用它,但不允许包括该类在内的任何东西进入范围以能够使用它?为了简化,假设我在一个名为 IO 的类中有 iostream 标头,并且我使 IO 能够使用 cout 函数编写内容,但不允许包含 IO 的任何内容能够使用 iostream 标头中的任何内容。这不是我想做的,但我需要弄清楚这一点,所以我不会“双重定义”事情。

4

2 回答 2

5

是的,您可以,只需将其包含在cppnot 中即可h

// IO.h
// note the lack of #include <iostream>

class IO
{
     // IO stuff...
     void f();
};

然后在cpp

// IO.cpp
#include "IO.h"
#include <iostream>

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

当您包含IO.h在您不包含的其他文件中时<iostream>,请查看编译单元概念。

于 2013-01-15T07:57:13.787 回答
3

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

于 2013-01-15T07:53:55.153 回答