如何在c++中使用auto获取变量并返回多个不同数据类型的变量

问题描述 投票:0回答:1

我必须将右值转换为整数、布尔值或字符串,但我无法转换它,导致出现错误

错误:自动返回类型的推导不一致:‘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);
}

有人可以帮忙吗

请任何人帮助我

c++ std auto crow
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.