与公开标头相关的C ++项目结构

时间:2019-05-06 21:32:50

标签: c++ oop header structure project

我试图理解c ++中的项目结构,发现很难理解类结构和头文件。

从第1条中摘录(此文章底部的链接)

  

按照惯例,include目录用于头文件,但是现代实践>建议include目录必须严格包含需要的头文件   公开曝光。

我对这个过程的第一个问题是关于包含目录中的一个单独的类文件。

公开标题的目的是什么?

接着,看一个公开的头文件的例子。已链接到以下GH库中:https://github.com/AakashMallik/sample_cmake

Game_Interface类如何与Game_Engine相关联?

game_interface.h

#pragma once

#include <game_engine.h>

class GameInterface
{
  private:
    GameEngine *game;

  public:
    GameInterface(int length);
    void play(int num);
};

我在其他地方寻找了此过程的简单解释,但是到目前为止,我发现的所有内容在此示例的上下文中都无法理解。

Web技术中C ++的背景还很新。

链接到文章1:https://medium.com/heuristics/c-application-development-part-1-project-structure-454b00f9eddc

1 个答案:

答案 0 :(得分:0)

公开标题的目的是什么?

有时您可能正在开发某些功能或库。您可能希望通过共享代码的功能来帮助其他人,客户或客户。但是您不想共享确切的工作细节。

因此,例如,您希望共享一个图像处理功能,该功能将精美的滤镜应用于该功能。但是同时,您不希望他们确切知道您是如何实现的。在这种情况下,您可以创建一个头文件,例如具有功能声明的img_filter.h-

bool ApplyFilter(const string & image_path);  

现在您可以在img_filter.cpp中实现所有详细信息:

bool ApplyFilter(const string & image_path)
{
....
    // Implementation detail
...
}

接下来,您可以准备此文件的dll,供您的客户端使用。有关工作,参数,用法等方面的参考,您可以共享img_filter.h

与界面的关系:
定义良好的接口通常很不错,因此您可以透明地更改实现细节,这意味着 HOW 实现的细节并不重要,只要保留接口或函数名称和参数即可完整。