初歩的な質問で恐縮です。
以下のようなファイルの構成でc++のプログラムを組んでいます。
<header.h>
class H {
public:
virtual void func() = 0;
};
<fileA.cpp>
#include "header.h"
class A : public H {
public:
void func() {}
};
<fileB.cpp>
#include "header.h"
class B : public H {
public:
void func() {}
};
<main.cpp>
#include "fileA.cpp"
#include "fileB.cpp"
int main() {
A a;
B b;
a.func();
b.func();
return 0;
}
これをビルドしようとすると、「クラス"H"を再定義しようとしています」とエラーが出てコンパイルができません。理屈は分かるのですが、これの対処方法が分かりません。この場合、header.hはJAVAにおけるInterfaceのような役割としてそれを使うfileA.cpp、fileB.cppの両者にインクルードしておきたいのです。これはどのようにして対処すべきなのでしょうか?
お礼
ありがとうございました、無事解決しました。