static member variable을 쓰다보면 다음과 같은 에러를 만날 때가 있다.
/tmp/ccjKGDVV.o(.data+0x0): multiple definition of `Url_Normalizer::hexchars'
/tmp/ccKxsP79.o(.data+0x0): first defined here
collect2: ld returned 1 exit status
-----------
static member variable은 class의 declaration시에 초기화하면 안되고 definition시에 초기화 해야한다.
따라서 filename.h 에는 declaration만 넣고 filename.cpp 에는 definition을 넣어서 컴파일해야 위의 에러를 막을 수 있다.
예)
filename.h ---------------------
class Url_Normalizer
{
static char* hexchars;
// 기타 변수들.. 블라블라
};
filename.cpp -------------------
char* Url_Normalizer::hexchars = "0123456789ABCDEF";
잘못된 예)
class Url_Normalizer
{
static char* hexchars = "0123456789ABCDEF";
// 기타 변수들.. 블라블라
};
댓글 없음:
댓글 쓰기