当前位置:  开发笔记 > 编程语言 > 正文

如何使用boost :: variant以"二维方式"定义异构std :: map

如何解决《如何使用boost::variant以"二维方式"定义异构std::map》经验,为你挑选了0个好方法。

我很乐意得到并建议如何以"二维方式"处理boost :: variant.听起来很奇怪,但让我的代码说更多(希望如此):

我编写了一个名为Parameter的类:

template
class Parameter : public quantity
{
...
}

上面定义的参数的示例用法:

Parameter SampleParameter1;
Parameter SampleParameter2;

当我试图通过上面的例子解释时,我可以使用boost::units::si::???和不同的数据类型double, short, int等定义几个参数类型.

我的目标是构建一个std::map可以存储任何Parameter类型实例的容器(如上所示).

因此我宣布:

typedef boost::variant, Parameter > SupportedParameterTypes;
std::map myMapStorage;

这很好用,但有一个很大的缺点我想解决 - 我必须定义参数类型的每一个组合我想支持SupportedParameterTypes上面定义的类型.

我的想法是定义boost :: mpl :: vector,保留我想支持的所有参数类型:

typedef boost::mpl::vector ParameterTypes;

另一方面,支持所有可能的参数数据类型:

typedef boost::mpl::vector ParameterDataTypes;

我遇到了麻烦:

typedef typename boost::make_variant_over::type ParameterTypeVariants;
typedef typename boost::make_variant_over::type ParameterDataVariants;

typedef boost::variant > SupportedParameterTypes;

但是定义boost::variant一些Parameter由其他人定义的东西boost::variant似乎不起作用:o(

问题:如何定义std::map容器,保存Parameter在适当的boost::mpl::vectors中定义的所有类型?

我想请你帮忙解决这个问题.也许根据我写的编码它是不是一个好主意/原则,谁知道.我的目标是通过std :: map灵活存储,以便能够保存我的所有参数,而不会使我的代码模糊不清.寻找智能解决方案当然:o)

非常感谢您对我的问题/请求帮助的任何回复

推荐阅读
郑小蒜9299_941611_G
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有