使用带有<function>的模板

时间:2017-07-12 21:54:23

标签: c++ class templates gcc

我试图制作菜单类的模板类,并尝试传递T类型,以便能够更改Argument类以使其更多用途

    template<class T>
    class Menu : public std::vector<std::tuple<uint8_t, std::wstring, std::function<void(T)>>> {
/**code over here**/
}

但每个GCC都给我一个错误

 C:\Users\InfoLabA-PC04\Desktop\Ar\Arley.hpp:188:8: error: invalid parameter type 'void'
   class Menu : public std::vector<std::tuple<uint8_t, std::wstring, std::function<void(T)>>> {
         ^~~~

当我尝试使用它时

Menu<void> MenuName;

1 个答案:

答案 0 :(得分:3)

您可以将声明更改为

template <typename... Ts>
class Menu : public std::vector<std::tuple<uint8_t,
                                           std::wstring,
                                           std::function<void(Ts...)>>> {
    // ...
};

并使用它

Menu<> MenuName;