将类代码分离为头文件和 cpp 文件

新手上路,请多包涵

我对如何将一个简单类的实现和声明代码分离到一个新的头文件和 cpp 文件中感到困惑。例如,我将如何分离以下类的代码?

 class A2DD
{
  private:
  int gx;
  int gy;

  public:
  A2DD(int x,int y)
  {
    gx = x;
    gy = y;
  }

  int getSum()
  {
    return gx + gy;
  }
};

原文由 drdrdr 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 979
2 个回答

类声明进入头文件。添加 #ifndef 包含防护非常重要。大多数编译器现在也支持 #pragma once 。我也省略了私有,默认情况下 C++ 类成员是私有的。

 // A2DD.h
#ifndef A2DD_H
#define A2DD_H

class A2DD
{
  int gx;
  int gy;

public:
  A2DD(int x,int y);
  int getSum();

};

#endif

并且实现在 CPP 文件中:

 // A2DD.cpp
#include "A2DD.h"

A2DD::A2DD(int x,int y)
{
  gx = x;
  gy = y;
}

int A2DD::getSum()
{
  return gx + gy;
}



原文由 Ferenc Deak 发布,翻译遵循 CC BY-SA 4.0 许可协议

在以更广泛的方式研究该主题时,向偶然发现此问题的读者指出,如果您只想将项目拆分为文件,则不需要接受答案的过程,这一点很重要。仅当您需要单个类的多个实现时才需要它。如果每个类的实现是一个,那么每个类只需要一个头文件就足够了。

因此,从接受的答案的示例中,只需要这部分:

 #ifndef MYHEADER_H
#define MYHEADER_H

//Class goes here, full declaration AND implementation

#endif

#ifndef 等预处理器定义允许它被多次使用。

PS。一旦您意识到 C/C++ 是“愚蠢的”并且#include 只是说“在此位置转储此文本”的一种方式,该主题就会变得更加清晰。

原文由 j riv 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题