从函数返回多种可能的类型-C ++

时间:2020-08-06 03:21:48

标签: c++ oop

我正在为我的应用程序创建输入系统。我目前有一个InputManager类,用于存储InputAction实例的列表。我希望能够在InputManager上拥有一个从其InputAction的任何值中获取一些值的函数。问题是我想让InputAction的子级返回不同类型的值。例如对于按键,我希望KeyInputAction返回一个布尔值,而MouseMoveInputAction应该返回一个浮点向量。这可能还是设计不好?


    template <class T>
    class InputAction
    {
    public:
        InputAction(std::string name);
        ~InputAction();
    
        template <class T>
        virtual T GetValue();
    protected:
        std::string m_Name;
    };
    
    class InputManager
    {
    public: 
        InputManager();
        ~InputManager();
    
        template <typename T>
        T GetValue(std::string actionName);
    
    private: 
        std::hash_map<std::string, InputAction*> m_InputActionMap;
    };

    template <typename T>
    T InputManager::GetValue(std::string actionName)
    {
        InputAction* action = m_InputActionMap.at(actionName);
        auto value = action->GetValue();
        return value;
    }

0 个答案:

没有答案