我想知道是否可以根据分配给它的变量类型来更改函数的返回类型。这是我的意思的一个简单示例。
我想创建一个函数来解析字符串中的 int、bool 或 float 变量。比如……
Int value = parse("37");
Float value = parse("3.14");
Bool value = parse("true");
我知道如果我将此函数设为模板,则必须从始终为字符串的参数列表中确定变量类型。有没有其他方法可以用 c++ 做到这一点?
最佳答案
这可以通过转换函数来完成
struct proxy {
string str;
proxy(string const &str):str(str) { }
template<typename T> operator T() {
return boost::lexical_cast<T>(str);
}
};
proxy parse(string const &str) { return proxy(str); }
现在你只需要做
float a = parse("3.1");
它应该运作良好。顺便说一句,您可以直接使用该类。我建议将其重命名为 conversion_proxy
以表明它只是发生转换的代理,但它本身不进行转换
struct conversion_proxy {
string str;
conversion_proxy(string const &str):str(str) { }
template<typename T> operator T() {
return boost::lexical_cast<T>(str);
}
};
float a = conversion_proxy("3.1");
关于c++ - 在没有模板特化的情况下更改函数的返回类型。 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1010539/