1)あるファイル(ExA.cpp)でクラスExAを定義する。(クラスExAはデータメンバint dataA、メンバ関数void funcA(int data)を持つ)
2)それとは別のファイル(main.cpp)でExA型のオブジェクトobjAを宣言する。
3)更に別のファイル(ExB.cpp)でクラスExBを定義する。
4)クラスExBのメンバ関数void funcB()内でobjA.funcA(objA.dataA)を使用する。
*クラスの宣言はそれらとは別のファイル(ExClass.h)で行われている。
*クラスExAのデータメンバint dataAはコンストラクタで初期化されている。
そして以下のようにソースコードを記述しました。
-- ExClass.h --
#ifndef ___EXCLASS
#define ___EXCLASS
class ExA {
public:
ExA();
public:
int dataA; //クラスExBでアクセスするためpublic
void funcA(int data) const;
};
extern ExA objA;
class ExB {
public:
ExB();
public:
void funcB() const;
};
#endif
#include "ExClass.h"
ExA::ExA() {
//int dataAの初期化
/* -- 以下略 -- */
}
void ExA::funcA(int data) const {
/* -- 以下略 -- */
}
#include "ExClass.h"
ExB::ExB() {
/* -- 以下略 -- */
}
void ExB::funcB() const {
objA.funcA(objA.dataA);
/* -- 以下略 --*/
}
「error LNK2001: 外部シンボル ""class ExA objA" (?objA@@3VExA@@A)" は未解決です。」
というエラーが出ます。
上記のコードの何処がいけないのでしょうか?
またより推奨される記述方法があれば教えて下さい。
お願い致しますm(__)m
使用言語 C/C++(主にC++)
OS Windows8.1
開発環境 Microsoft Visual Studio Express 2013 for Windows Desktop