我正在寻找堆栈溢出最好的方式来从函数返回不同的值类型在c + +中 我发现很酷的方式,尤其是这种方法它尽可能地接近它:
C++ same function parameters with different return type从C++/C++函数返回不同值类型的优雅方法11
但有问题。 值对象可以采取/只投了弦所以,如果我有这样的事情:
Value RetrieveValue(std::string key)
{
//get value
int value = get_value(key, etc);
return { value };
}
即时得到:
error C2440: 'return': cannot convert from 'initializer list' to 'ReturnValue'
no suitable constructor exists to convert from "int" to "std::basic_string<char, std::char_traits<char>, std::allocator<char>>"
我的问题是,我可以修改值对象还支持布尔和浮动,诠释?
struct Value
{
std::string _value;
template<typename T>
operator T() const //implicitly convert into T
{
std::stringstream ss(_value);
T convertedValue;
if (ss >> convertedValue) return convertedValue;
else throw std::runtime_error("conversion failed");
}
}
也是为什么“价值”在返回:{ value }
大括号?
给定的值对象* *已经支持你在暗中'运营商T列出的类型( )'。您提供的错误消息表明您的代码与您展示的样本非常不同。如果你向我们展示你正在编译的代码,这将会有所帮助。 – greyfade