- 締切済み
クラスのメンバ関数を別ファイルで定義したときのバグ
C++ においてヘッダファイルで宣言したクラスのメンバ関数を別のソースファイルで定義して、コンパイルするとうまくいきません。エラーは出ないのですが、同名の何もしない関数としてコンパイルされているようなのです。クラスのメンバ関数を宣言したのと同じヘッダに書くとちゃんとコンパイルされます。 どうしてそうなるのか、いまいち原因がわかりません。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- Tacosan
- ベストアンサー率23% (3656/15482)
回答No.2
#1 と同じですが, 具体的にどんなプログラムを書いてそのような現象が起きたのですか? コンパイラや実行環境はなんですか?
- LongSecret
- ベストアンサー率68% (22/32)
回答No.1
コードがないと原因が分かりませんが //////MyClassA.h////// class MyClassA { int i; public: void SetI(int a); int GetI() const { return i; } }; //////MyClassA.cpp////// #include "stdafx.h" //プリコンパイル済みヘッダ #include "MyClassA.h" void MyClassA::SetI(int a){ i = a; } こんな感じで出来ませんか?
質問者
お礼
回答ありがとうございます。質問ですが、私の勘違いでした。出力用のマクロを別のヘッダで定義していたのですが、マクロ定義はコンパイル単位ごとに設定する必要があったようです。
お礼
回答ありがとうございます。 出力用の関数をヘッダにまとめてて、インクルードするところでミスが出たようです。