现在我有这样的事情:
int a = getVal<int>("key1");
double b = getVal<double>("key2");
其中getVal()只是强制转换并返回与该键对应的值。有可能把它变成这个:
int a = getVal("key1");
double b = getVal("key2");
代码并没有太大差异,但我大多只是想知道这是否可行。谢谢你的帮助。
答案 0 :(得分:4)
这样的事情:
template <typename T>
T getVal(const string& key); // as before
class ValProxy {
private:
ValProxy(const string& key) : key_(key) {}
string key_;
friend ValProxy getVal(const string& key);
public:
template <typename T>
operator T() const {
return getVal<T>(key_);
}
};
ValProxy getVal(const string& key) {
return ValProxy(key);
}