有没有办法在 C++ 中“取消包含”文件?

zix*_*uan 6 c++ class

我有一个只在另一个类的一个特定部分使用的类。主类的任何其他部分都没有提到它。我在文件顶部包含相应的标题。

在我使用它之后,有什么方法可以“取消包含”标题吗?

我的意思是,在您“取消包含”类的标头后,将不会定义对该类的引用,并且在编译时对该类的任何调用都会引发错误。

伪代码:

// code section where "cubeData" should be visible
#include "CubeData.h"

void mainWidget::createGeoObjects() {
  cube = new cubeData();
  // ...
}

// #uninclude "CubeData.h" - ???
//
// code section where "cubeData" should be invisible
void mainWidget::otherFunction() {
  cube = new cubeData(); // should result in a compile error
  // ...
}

Run Code Online (Sandbox Code Playgroud)

Yun*_*sch 9

在代码文件的中途取消包含头文件的效果,您在文件开头包含了头文件,应该是后半部分的代码就像没有包含头文件一样。

这可以通过将代码文件分成两部分来实现。
第一部分包括有问题的标题(可能还有其他一些标题)。
第二部分不包括标题(但又是其他部分,因此它们的内容是已知的)。

您可能需要将上半部分需要在下半部分可见的任何内容放入新标题中,并将其包含在两个部分中。

简而言之,创建两个代码文件并将您需要的内容包含在其中。尤其不要包括您不想被看到的内容。


mrk*_*rks 7

不。

其中一部分是包括处理器的一部分。对于实际的编译器,包含文件中的代码和包含文件中的代码看起来相同。

  • 我很想编辑我的答案,以“是”开头。不是为了惹恼你,而是为了强调不同的方法。我接受您回答“否”。表达不包含本身是不可能的,并同意预处理器不会以这种方式工作。我的答案是达到效果,你的答案是严格按照要求去做。我实际上并没有看到这两个答案之间的冲突。投我一票: (3认同)