ゲームが作れるようになるまでがんばる日記

ゲーム制作のことを中心にゲームに関することを書いています

タイプコードをenumで

この前のタイプコードをクラスで置き換えるという日記(id:toburau:20070910)を書いていて、C++ならenumでいけるんじゃない?と思って確かめてみた。

class Item
{
public:
    typedef enum {
        WEAPON,
        ARMOR,
        SHIELD,
    } Type;

private:
    Type itemtype;

public:
    Item(Type itemtype) {
        this->itemtype = itemtype;
    }
};

void main()
{
    Item* weapon = new Item(Item::WEAPON);
    Item* armor = new Item(1); // コンパイルエラー

}

Borland C++ Compilerで確認。
おお、ちゃんと型チェックをコンパイル時に行ってくれる。
久しぶりにC++でコードを書いてみたら、なんか書きにくかった。頭がJavaモードになりつつある気がする。Javaのほうが書いていて楽だ。

追記:
enumの部分はtypedefを使わなくても次のように書ける。

enum Type {
    WEAPON,
    ARMOR,
    SHIELD,
};