如何编写模板将矢量转换为Json::Value(jsoncpp)
how to write a template converts vector to Json::Value (jsoncpp)
我写了一个模板(如下),但它无法编译
template<class t, template<typename> class iterable>
Json::Value iterable2json(const iterable<t>& cont)
{
Json::Value v;
for(const t& elt : cont)
{
v.append(elt);
}
return v;
}
std::vector<int> vec{1,2,3};
Json::Value v = iterable2json(vec)
错误C3312:找不到类型"const-std::_Vector_val<"的可调用"begin"函数_Val_types>'
带有[_Val_types=std::_Simple_types]
请参阅正在编译的函数模板实例化"Json::Value iterable2json,std::_Vector_val>(const std::-Vector_vall<_val_types>&)"的参考
具有[_Value_type=int,_Val_types=std::_Simple_types]
错误C3312:找不到类型"const-std::_Vector_val<_Val_types>'
带有[_Val_types=std::_Simple_types]
错误C2065:"elt":未声明的标识符
问题是编译器无法推导类型t
,因为它是通过模板模板参数间接确定的。然而,实际上一开始就没有必要做这样的事情!以下操作很好:
template <typename Iterable>
Json::Value iterable2json(Iterable const& cont) {
Json::Value v;
for (auto&& element: cont) {
v.append(element);
}
return v;
}
(好吧,由于我没有你正在使用的Json
库,我没有尝试编译它,但我认为它应该很好)。
相关文章:
- 在c++中使用nlohmann从类到json的转换
- 瓦尔格林德:数学函数"Conditional jump or move depends on uninitialised value(s)"
- C++json插入数组
- nlohmann-json将一个数组插入到另一个数组中
- 如何使用curlpp通过POST方法上传文件和json数据
- .value( "key" , default) 不适用于空的 json 对象吗?
- 为什么 运算符 = 不为 Json::Value?
- 比较 JSON::Value 变量中的数据,然后更新到文件
- 将`web :: json :: object“转换为`web :: json :: value`
- 如何在 c++ 中创建 Json::Value::ArrayIndex
- 返回时,JSON :: Value会更改
- 卡萨布兰卡 C++ REST SDK 中的 web::json::value::p arse 和 web::json::
- 在 Json::Value in JsonCpp 中赋值 [null]
- 如何使用卡萨布兰卡在现有的web::json::value对象中附加新的键值对?
- JsonCpp:如何在 Json::Value 中获取 en 空对象
- 将 json::value 转换为 std::string
- JsonCpp:未定义的对"Json::Value::operator[](int) const"的引用
- 对web::json::value::object的未定义引用,即使包含json.h
- JsonCpp - 当有一个 json::Value 对象时,我怎么知道它的键名?
- 如何编写模板将矢量转换为Json::Value(jsoncpp)