我正在构建一个类,我想使用各种参数进行配置,其中可能是:int
, double
and string
(or const char *
对于这个问题)。在像 Ruby 这样的语言中,我将构建一个初始化函数,该函数采用由字符串作为键控的哈希值。例如:
class Example
def init_with_params params
puts params
end
end
e = Example.new
e.init_with_params({ "OutputFile" => "/tmp/out.txt", "CaptureFPS" => 25.0, "RetryDelaySeconds" => 5 })
如何在 C++ 中创建类似的行为?
环顾四周,我发现了几个帖子谈论boost::variant
。如果通过将不同类型限制为我上面提到的 3 种类型,可以制定一个相当干净的解决方案,我宁愿避免使用 boost。
Edit:
我同意使用设计良好且经过广泛测试的代码(例如 Boost.Variant)比重新实现相同的想法要好得多。在这种情况下,问题被简化为仅使用 3 种基本类型,因此我一直在寻找最简单的实现方法。
如果您想避免使用Boost,您可以将Boost.Variant的代码复制粘贴到您的项目中。无论如何,它只是标题。或者,您可以通过实施通常所谓的“歧视联盟”来重新发明轮子。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)