동일 클래스의 오브젝트를 여러 개 생성할 일이 있어서 아래와 같이 코딩했는데요..
어느 오브젝트에서 Init하든 모든 오브젝트에서 Init 효과를 주기 위해서 static 변수로 Init 여부를 판별할 수 있도록 하였습니다.
그런데, link error가 발생합니다. 왜 일까요?
class TA {
private:
static bool m_bInit; // 이 놈이 문제임다.
public:
TA() { m_bInit= false; }
void Init() { m_bInit= true; }
bool IsInitOk() { return m_bInit; }
};
실제 코드에서는 이렇게 사용하려 합니다.
TA a,b,c
a.Init();
...
if ( b.IsInitOk() ) {
// do Something..
} else {
// ...
}
[ilink32 Error] Error: Unresolved external 'TA::m_bInit' referenced from D:\....
[ilink32 Error] Error: Unable to perform link
즉, Object a가 Init했지만 모든 Object가 Init한 효과를 가지기 위해 static 변수를 두었는데.. Link Error라니...
어떻게 해결해야 할 지요?
|