2
我想在C++ 11中使用boost :: variant来创建这个,但我不知道如何。 所以我存储在模板类数据<>如何检索一个模板类的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++ 14解决方案更加棒,我会建议包括它,即使在C++ 11问题中也是如此。 :) – Yakk
@Yakk:加入! :) –