具有大量参数的C ++命令模式

时间:2018-10-12 06:53:25

标签: c++11

我正在实现一个涉及大量动作和参数的命令模式实现。为简化起见,我计划使用可以将所有可能的参数保存到映射中的模块的类。

isDisplayButtons

此实现的一个明显缺点是每个参数都必须从IParam接口扩展,我可以以某种方式简化它。

1 个答案:

答案 0 :(得分:0)

如果获取后使用参数的人知道参数的类型,则可以使用c ++ 17 std::any,或者如果必须使用c ++ 11,则可以尝试{{1} },或者如果您都不能使用boost::any

区别在于void *不会在强制转换为错误类型时失败,其中void*将引发异常,如果与指针一起使用,则返回nullptr。您还需要在std :: shared_ptr中使用自定义删除器,以便能够释放void *。