C++ 基于预期返回类型的模板参数
现在我有这样的事情:C++ 基于预期返回类型的模板参数,c++,C++,现在我有这样的事情: int a = getVal<int>("key1"); double b = getVal<double>("key2"); template <typename T> T getVal(const string& key); // as before class ValProxy { private: ValProxy(const string& key) : key_(key) {} string ke
int a = getVal<int>("key1");
double b = getVal<double>("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);
}
这在代码上并没有很大的区别,但我只是想知道这是否可能。谢谢你的帮助。类似这样的内容:
int a = getVal<int>("key1");
double b = getVal<double>("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);
}
模板
T getVal(常量字符串和键);//一如既往
类代理{
私人:
ValProxy(常量字符串和键):键(键{}
字符串键;
friend ValProxy getVal(常量字符串和键);
公众:
模板
运算符T()常量{
返回getVal(键);
}
};
ValProxy getVal(常量字符串和键){
返回ValProxy(key);
}
类似这样的内容:
int a = getVal<int>("key1");
double b = getVal<double>("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);
}
模板
T getVal(常量字符串和键);//一如既往
类代理{
私人:
ValProxy(常量字符串和键):键(键{}
字符串键;
friend ValProxy getVal(常量字符串和键);
公众:
模板
运算符T()常量{
返回getVal(键);
}
};
ValProxy getVal(常量字符串和键){
返回ValProxy(key);
}
getVal(“键1”,a)如果是Java,那么可以使用类似于Integer a=getVal(“key1”)代码>。在C++中,右手表达式确定了超类型,因此必须显式指定(例如,通过冒充的克里斯参数)。<代码> GETVAL(“KE1”),<如果是Java,那么可以使用类似于Integer a=getVal(“key1”)代码>。在C++中,右手表达式决定了克里斯的类型,因此必须明确地指定它(例如,通过一个冒名的额外参数,如“@”建议的那样)。还教了我一些关于赋值和使用cast操作符的知识。谢谢看起来那样行得通。还教了我一些关于赋值和使用cast操作符的知识。谢谢