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

时间:2016-01-07 19:48:40

标签: java c++ module namespaces packages

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

enter image description here

2 个答案:

答案 0 :(得分:4)

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

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

IDE Filters - Folder Structure correlation

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

示例:

Time.hpp:

namespace your_project {
  namespace time {
    // Time class declaration
  }
}

CpuTime.hpp:

namespace your_project {
  namespace time {
    // CpuTime class declaration
  }
}

StringUtils.hpp:

namespace your_project {
  namespace utils {
    // StringUtils class declaration
  }
}

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

Example.cpp

#include <Utils/StringUtils.hpp>

using namespace your_project::utils;

// Do stuff with StringUtils class

答案 1 :(得分:1)

C ++有名称空间

您可以将每个目录映射到嵌套命名空间

namespace myproject
{

   namespace time
   {

   }

}