-1

C ++でを使用する場合、enumゲッターとセッターはどのように作成しますか?

例:

enum class FieldLayerStates
{
        kEmpty = 0, // new to the game.
        kActive = 1, // has fields already in the same.
        kAdd = 2 // field layer is ready to have a field added.
};

FieldLayerStates _fieldLayerState;

inline FieldLayerStates getFieldLayerState() { return _fieldLayerState; };

inline void setFieldLayerState(FieldLayerStates i) { _fieldLayerState = i; };

インライン関数でエラーが発生します:

: Unknown type name 'FieldLayerStates'
: Cannot initialize return object of type 'int' with an lvalue of type 'FieldLayer::FieldLayerStates'

そして、私がそれを使用するとき:

 // check the status of the layer to see if it has fields in it already (loaded from CCUserDefaults
if (getFields().empty())
{
    // nothing, this must be our first time in.
    setFieldLayerStatus(kEmpty);
}

kEmpty未発表と書いてあります。

誰かが私の混乱を解消するのを手伝ってくれますか?

4

3 に答える 3

4

を使用していenum classます。それでよろしいですか?

それをやめると、コードは機能します。

それ以外の場合は参照FieldLayerStates::kEmpty(の列挙子はenum class型名で修飾する必要があるため)

コードを理解するのに十分なコンテキストを示していないため、Unknown type name 'FieldLayerStates'エラーが発生する理由がわかりません。おそらく、クラス外で関数を定義しようとしていると思います。FieldLayer::FieldLayerStates

完全なコードを表示して、実際にコンパイルしているものを確認できるようにしてください。

于 2013-06-11T17:27:51.750 に答える
1

私はあなたがこれを望んでいると思います

enum FieldLayerStates
{
    kEmpty = 0, // new to the game.
    kActive = 1, // has fields already in the same.
    kAdd = 2 // field layer is ready to have a field added.
};
于 2013-06-11T17:27:06.570 に答える