#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을 쓰는게 더 낫다는 생각도 가진다.
댓글 없음:
댓글 쓰기