0

定数に基づいた構造を作ろうとしています。私はObjectTypes(KEYBOARD、MOUSE、HAPTIC ...)を持っていますInputTypes(MOUSEはDEFAULTとINVERSEにすることができますが、KEYBOARDはDEFAULTとNUMERICとHAPTICのみをDEFAULTにすることができます)。

Constantsこれを機能させるために、C++ で呼び出されたクラスの列挙型内で列挙型を使用しようとしています。ObjectTypesパラメータとパラメータを関数に渡すとうまくいくかもしれないInputTypesので、プロトタイプには次のようなものが必要です。

changeInputSystem(SimulatorConstants::InputObject input, SimulatorConstants::InputTypes type)

しかし、C++ では、enum を宣言すると、すべての値がこれから (内部的に) 取り出され、そのうちのいくつかが他の値を置き換えます。

現在の私のコード(そして機能していない)は次のとおりです。

    enum InputObject {
        KEYBOARD,
    MOUSE,
    HAPTIC
};

enum InputTypes {
    enum KeyboardTypes {
        DEFAULT
    };
    enum MouseTypes {
        DEFAULT,
        INVERSE
    };
    enum HapticTypes {
        DEFAULT
    };
};

注:列挙型の間に継承がないことはわかっているので、同様の方法で機能するソリューションが必要です。ありがとう。

4

3 に答える 3

1

全体をオブジェクト指向にすればうまくいきます。したがって、すべての列挙型を使用する代わりに、クラスを使用するだけです。

class InputObject {};

class Mouse : public InputObject
{
  void setDefault();
  void setInverse();
};

このようにして、InputObject の型をオブジェクト内に保存することができ、実際の InputObject だけを渡すことができます。

于 2013-04-11T14:04:20.303 に答える