Effective C++(第3版)Item 4代码布局

Effective C++ (3rd edition) Item 4 code layout

在 Scott Meyers 的 Effective C++: 55 Specific Ways to Improve Your Programs and Designs(第 3 版) 中,他在第 4 项中描述了如何定义非本地静态对象的初始化在不同的翻译单元中崩溃并给出了一堆示例代码。

然而,我对代码布局感到困惑,它应该是什么?

我尝试过的:

而执行g++ directory.cpp fileSystem.cpp时,结果是这样的:

directory.cpp: In constructor ‘Directory::Directory()’:
directory.cpp:7:25: error: ‘tfs’ was not declared in this scope
    7 |     std::size_t disks = tfs.numDisks();
      |   

我对 C++ 中的 #include 东西有点不高兴,我希望它不会妨碍我理解 Effective C++ Item 4 中示例代码的正确布局。

您需要将 extern FileSystem tfs;fileSystem.cpp 移动到头文件 fileSystem.h 才能编译它。

如果应该可以link,你还需要在fileSystem.cpp中定义它。

fileSystem.h

extern FileSystem tfs;

fileSystem.cpp

FileSystem tfs;