【问题标题】:How to set default value in template function in c++?如何在 C++ 中的模板函数中设置默认值?
【发布时间】:2015-08-06 04:58:32
【问题描述】:

我想实现如下模板功能。 ret 是在 doSomething() 之后设置的返回值。但是在doSomething中有时会返回false,所以我想给ret设置一个默认值。如果 T 是 int,ret 应该是 0,如果 T 是字符串,ret 应该是一个空字符串。那么在这种情况下,我应该如何将默认值设置为T

T getSomeData() {
  T ret;
  if(doSomething()) {
    ret = XXX(); // XXX is set correctly because I use other library..
  } else {
    ret = ??
  }
  return ret;
}

【问题讨论】:

    标签: c++ templates


    【解决方案1】:
    template<class T>
    T getSomeData() {
      T ret = T();
      if(doSomething()) {
        ret = XXX();
      }
      return ret;
    }
    

    【讨论】:

    • 太棒了!谢谢你。但是如果是自定义类,我应该注意T的类型。
    【解决方案2】:

    没有理由不这样做,我倾向于写一些类似的东西:

    template <class T>
    T getSomeData() { 
        return doSomething() ? XXX() : T();
    }
    

    如果您愿意,可以改用if 语句:

    template <class T>
    T getSomeData() { 
        if (doSomething())
            return XXX();
        return T();
    }
    

    然而,我认为定义一个局部变量只是为了保存返回值并没有任何好处。

    【讨论】:

      【解决方案3】:

      你可以使用构造函数。

      template<typename T>
      T getSomeData() {
        T ret = T();
      }
      

      【讨论】:

      • 这有效,即使对于没有构造函数的类型T
      猜你喜欢
      • 2011-03-19
      • 2012-02-27
      • 1970-01-01
      • 2013-04-26
      • 2012-03-26
      • 2011-07-12
      • 1970-01-01
      • 2010-10-22
      • 1970-01-01
      相关资源
      最近更新 更多