• 締切済み

クラスのメンバ関数を別ファイルで定義したときのバグ

C++ においてヘッダファイルで宣言したクラスのメンバ関数を別のソースファイルで定義して、コンパイルするとうまくいきません。エラーは出ないのですが、同名の何もしない関数としてコンパイルされているようなのです。クラスのメンバ関数を宣言したのと同じヘッダに書くとちゃんとコンパイルされます。 どうしてそうなるのか、いまいち原因がわかりません。

みんなの回答

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

#1 と同じですが, 具体的にどんなプログラムを書いてそのような現象が起きたのですか? コンパイラや実行環境はなんですか?

sub_6
質問者

お礼

回答ありがとうございます。 出力用の関数をヘッダにまとめてて、インクルードするところでミスが出たようです。

回答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; } こんな感じで出来ませんか?

sub_6
質問者

お礼

回答ありがとうございます。質問ですが、私の勘違いでした。出力用のマクロを別のヘッダで定義していたのですが、マクロ定義はコンパイル単位ごとに設定する必要があったようです。

関連するQ&A

専門家に質問してみよう