【发布时间】:2016-12-01 14:44:08
【问题描述】:
我正在尝试使用 c++11 中的 boost::variant 来创建它,但我不确定如何。 所以我有模板类数据的这种结构
typedef boost::variant< data<A>,data<B>> dataVar;
存储在一个
std::map<string,dataVar> dataMap
如果我能以某种方式检索数据的类型,这样我就可以分配值,但我不知道如何优雅地完成这项工作
void registerDataFor(string str)
{
auto itr = dataMap.find(str);
if(itr == dataMap.end())
return;
dataVar = itr->second;
data<v.which()> itemData= boost::get<v.which()>(v);
someArray.push_back(itemData.getIntegerValue());
registerDataFor(itemData.getString());
}
由于模板括号需要静态类型,因此无法编译。
我看到了其他提出访问者设计的回复,但我还需要数据类型来获取项目。
【问题讨论】:
标签: c++ c++11 templates boost boost-variant