现在我有这样的事情:
int a = getVal<int>("key1");
double b = getVal<double>("key2");
其中getVal()只是强制转换并返回与键对应的值。是否可以将其转换为:
int a = getVal("key1");
double b = getVal("key2");
这在代码上并没有太大的区别,但是我只是想知道这是否可能。谢谢您的帮助。
最佳答案
像这样:
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);
}
关于c++ - 基于预期 yield 类型的模板参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25375118/