私は、このようなリンクされた2つの異なるcppファイルにcppファイルを含めるにはどうすればいいですか?
//blah.cpp
int blah()
{
return 1;
}
としてCPP単純なファイルを持っており、一方が他方を継承したファイルの2セットがあると仮定。
ああ:またBHとを含む
#ifndef B_H
#define B_H
#include "a.h"
class ChildBlah : public Blah
{
public:
ChildBlah(int var, int childvar);
int callingblah();
private:
int childvar;
};
#endif
b.cppメイン方法
を有する:ああああを継承//a.cpp
#include "blah.cpp"
#include "a.h"
Blah::Blah(int var) : myvar(var) {}
int Blah::callingblah()
{
blah();
return 2;
}
BHを含む
//a.h
#ifndef A_H
#define A_H
class Blah
{
public:
Blah(int var);
int callingblah();
private:
int myvar;
};
#endif
a.cpp
//b.cpp
#include "blah.cpp"
#include "b.h"
ChildBlah::ChildBlah(int var, int childvar) : Blah(var), mychildvar(childvar) {}
int ChildBlah::callingblah()
{
blah();
return 3;
};
int main()
{
Blah myBlah(1);
ChildBlah myChild(1,2);
cout << myBlah.callingblah();
cout << myChild.callingblah();
}
そして、私が使用してコンパイル:
g++ a.cpp b.cpp blah.cpp
ここでの問題は、私は複数の場所にblah.cppが含まれているので、私は「複数の定義」エラーが出るということです。
しかし、blah.cppを含めることはできません。なぜなら、「宣言されていません」というエラーが表示されるからです。
私は意図的に教育と経験のためにblah.hを作っていません。 cppをインクルードし、ヘッダーを持たないようにするシナリオがいくつかあります。
blah.cppのヘッダーファイルを作成せずにこれを解決するにはどうすればよいですか?
* .cppファイルを#includeしないでください。 – Eljay
[定義されていない参照/未解決の外部シンボルエラーとは何ですか?また修正するにはどうすればいいですか?](https://stackoverflow.com/questions/12573816/what-is-an-undefined-reference-unresolved-external-シンボルエラーとハウツーi-fix) – user0042
_ @ marumaru_ホールド!あなたが尋ねているのと同じ質問がないので、私の重複した提案を否定しないでください。すべての答えはあなたの特定の問題を解決するためのものです。 '#include'ヘッダファイルとリンク翻訳単位 – user0042