.cpp と .h

最近始めたC++C++では

  • ヘッダファイル(*.h)に変数・関数・コンストラクタなどのリストを記述
  • ソースファイル(*.cpp)に関数の定義などを記述

という決まりがあるそう。

Mac コンパイラでは、どのファイル名も重複してはいけません。あるファイルが場所限定的にのみ使われるからといって、他の場所のヘッダファイルと同じ名前を使ってもいいと考えてはいけません。よくないのです。すべてのファイル名は異なっている必要があります。

https://developer.mozilla.org/ja/C___Portability_Guide

ということでfoo.cppに対してfoo.hというように各.cppファイルに対して.hファイルを用意する。

例:foo.cpp

#include "foo.h"

int foo::fooMethod(char* p) {
  ...
}

foo.h

#ifndef __foo_h__
#define __foo_h__
class foo
{
  public:
    foo();
    ~foo();
    int fooMethod(char* p);
    ...
}
#endif

Cと同じような感覚で使えると甘く見てました。勉強せねば。