如何在 C++(来自 Java)的子目录中组织头文件/类文件?

Pet*_*Mel 2 c++ java namespaces module packages

我是 C++ 的新手,来自 Java,我需要将一个简单的项目从 Java 迁移到 C++。我很困惑如何在 C++ 中处理模块和类分离。该项目如下图所示。我明白(如果我错了,请纠正我)每个类都必须有一个头文件,以便其他系统可以使用我的库导入和使用它。但是由于 C++ 没有包,我不确定在 C++ 中处理该组织问题的正确/标准方法是什么。有人可以帮忙吗?

在此处输入图片说明

Nac*_*cho 6

为了保持简单和干净,是的,每个类都应该有自己的头文件和相应的实现 (.cpp) 文件。您可以为每个文件声明多个类,没有什么可以阻止您这样做,但是如果您这样做,也许您会花一些时间在文件中导航以找到您要查找的类(尽管“转到定义/声明”会完成工作)。

您可以在项目中的 IDE 中创建过滤器,就像在 Eclipse 中创建包一样。我建议过滤器遵循与您在 HDD 中为您的项目相同的文件夹结构。

IDE 过滤器 - 文件夹结构关联

正如格伦所说,你应该使用 C++ 命名空间。例如,您的“Time.java”文件将由“Time.hpp”和“Time.cpp”文件表示。

例子:

时间.hpp:

namespace your_project {
  namespace time {
    // Time class declaration
  }
}
Run Code Online (Sandbox Code Playgroud)

处理器时间.hpp:

namespace your_project {
  namespace time {
    // CpuTime class declaration
  }
}
Run Code Online (Sandbox Code Playgroud)

StringUtils.hpp:

namespace your_project {
  namespace utils {
    // StringUtils class declaration
  }
}
Run Code Online (Sandbox Code Playgroud)

然后,如果您需要使用一个类,您只需包含标题。

例子.cpp

#include <Utils/StringUtils.hpp>

using namespace your_project::utils;

// Do stuff with StringUtils class
Run Code Online (Sandbox Code Playgroud)