static 멤버변수의 경우 아래처럼 전역공간에 추가적으로 선언 해줘야 한다네요.
bool TA::m_bInit = false;
참조
http://blog.naver.com/yk382/220354383603
돌매 님이 쓰신 글 :
: 동일 클래스의 오브젝트를 여러 개 생성할 일이 있어서 아래와 같이 코딩했는데요..
: 어느 오브젝트에서 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라니...
: 어떻게 해결해야 할 지요?
:
:
|