電子書籍の厳選無料作品が豊富!

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

どうしてそうなるのか、いまいち原因がわかりません。

A 回答 (2件)

#1 と同じですが, 具体的にどんなプログラムを書いてそのような現象が起きたのですか?



コンパイラや実行環境はなんですか?
    • good
    • 0
この回答へのお礼

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

お礼日時:2012/02/15 21:51

コードがないと原因が分かりませんが



//////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; }


こんな感じで出来ませんか?
    • good
    • 0
この回答へのお礼

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

お礼日時:2012/02/05 08:51

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!