Window 환경의 코드를 Linux로 porting하는 것을 하고 있는데, 계속해서 차이가 많이 났는데, 특히 static member variable에 관한 문제로 머리가 아팠다.
g++ 환경에서는 static member variable은 사용하기 전에 일단 클래스 외부에서 선언을 해 주어야 하는 것 같다. static member variable은 private member 이어도 선언하는 것은 가능하다.
#include <stdio.h>
class Count
{
private:
int Value;
static int Num;
public:
Count() {Num++;}
~Count() {Num--;}
static void InitNum() {
Num = 0;
}
static void OutNum() {
printf("Current object = %d\n", Num);
}
};
int Count::Num;
int main() {
Count::InitNum();
Count::OutNum();
Count C, *pC;
C.OutNum();
pC = new Count;
pC->OutNum();
delete pC;
pC->OutNum();
printf("size=%d\n",sizeof(C));
return 0;
}