Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/138.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 基于预期返回类型的模板参数_C++ - Fatal编程技术网

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)Integer a=getVal(“key1”)。在C++中,右手表达式确定了超类型,因此必须显式指定(例如,通过冒充的克里斯参数)。<代码> GETVAL(“KE1”),<如果是Java,那么可以使用类似于
Integer a=getVal(“key1”)。在C++中,右手表达式决定了克里斯的类型,因此必须明确地指定它(例如,通过一个冒名的额外参数,如“@”建议的那样)。还教了我一些关于赋值和使用cast操作符的知识。谢谢看起来那样行得通。还教了我一些关于赋值和使用cast操作符的知识。谢谢