我必须将右值转换为整数、布尔值或字符串,但我无法转换它,导致出现错误
错误:自动返回类型的推导不一致:‘int’然后是‘bool’
auto convertData(const crow::json::rvalue &data) {
std::string type = get_type_str(data.t());
if(type == "Number"){
return int(data.i());
} else if(type == "True" || type == "False") {
return bool(data.b());
}
std::string val = data.s();
return std::string(val);
}
有人可以帮忙吗
请任何人帮助我
auto
返回类型不能做到这一点。返回值的类型必须静态已知。您可以考虑退回std::variant<std::string,int>
。但是,我怀疑 crow::json::rvalue
已经是某种变体了。
您可以将该函数设为模板:
template <typename T>
T getAs(const crow::json::rvalue &data);
使得调用者指定类型:
std::string s = getAs<std::string>(x);
如果只有两种类型,我宁愿建议编写两个重载:
getAsString
和getAsInt
。