일요일, 7월 02, 2006

Type safe ENUM in C++

#include <iostream>
#include "stdafx.h"


using namespace std;

class FileType
{
private:
int code;
char* name;
FileType(int i,const char* nname) {
code = i;
name = (char *)nname;
}
protected:
public:

static const FileType* File;
static const FileType* Dir;

int getCode() const
{
return code;
}
char* toString() const
{
return name;
}


};

const FileType* FileType::File = new FileType(0,"File Type");
const FileType* FileType::Dir = new FileType(0,"Directory Type");


int _tmain(int argc, _TCHAR* argv[])
{
const FileType *ft = FileType::File;

cout << FileType::File->toString() << endl;
cout << FileType::Dir->toString() << endl;

if( ft == FileType::File )
{
cout << "파일타입" << endl;
}
else if( ft == FileType::Dir )
{
cout << "디렉토리 타입" << endl;
}
return 0;
}
 
Josua Bloch의 자바 버전의 Typesafe Enum을 C++로 구현 시도해보았다.
무언가 엉성한 감이 있고, 실제로 이런식으로 Enum을 쓸바에 그냥 C++의
키워드로 있는 Enum을 쓰는게 더 낫다는 생각도 가진다.


댓글 없음: