본문 바로가기

Developement

class 내 static member.


가끔 프로그래밍을 하다 보면 참 쉬운걸 안해놓고 "왜 안돼는거지?" 라는 의문에 패닉상태로 가는 경우가 있습니다.
이번에도 static member 를 만들어 두고 그걸 초기화를 안해 놓고 왜 심볼이 링크할때 없다고 그러는거지? 라는 어철구뉘 없는 짓을 하고 있는 자신을 발견했었죠 -_-;

그래서  저와같은 일이 없길 바라는 마음에서 약간의 허접 강좌를 써 보도록 하죠-

먼저 코드 입니다.

testStaticOne 이라는 클래스엔 생성자/소멸자를 제외한 총 2개의 public member 가 있고, 클래스 주소를 기억할 static void* 가 하나 존재 합니다.
가끔 static 으로 class 내에 만들어 두고 초기화를 안해서 왜안돼는겨~ 라고 고민하는 경우가 발생하더군요...

class 내에 static void* pClass 가 있으니 구현부에도 void *testStaticOne::pClass = NULL; 이라고 초기화를 해 줘야 겠죠.
결과는 맨 위에 있는 캡쳐사진 처럼 testFunc1() 이 호출, pClass 를 testStaticOne 클래스로 typecasting 후 public 인 testFunc2() 를 호출 하면, testFunc3() 가 마지막에 불리고 종료되는 구성 입니다.

별 다른 특별한 점은 없겠지만 가끔 static member 를 class 에서 써야 하는 경우 한줄에 해당하는 걸 안만들어 두고 왜 안돼지 하는 고민에 빠지는 사람이 더러 있을거 같아 적어 봅니다...

ps_
제 경력에 이런 실수하면 참 쪽팔리기도 하죠 .. 된장 ㅠㅠ