代码之家  ›  专栏  ›  技术社区  ›  Christian Ammer

如何正确初始化模板类型的成员变量?

  •  19
  • Christian Ammer  · 技术社区  · 16 年前

    template<class T>
    void doSomething()
    {
        T a; // a is correctly initialized if T is a class with a default constructor
        ...
    };
    

    但如果T是基元类型,变量a将保持未初始化状态。我可以编写ta(0),但如果T是类,则这不起作用。在这两种情况下(T==class,T==int,char,bool,…)都有初始化变量的方法吗?

    2 回复  |  直到 8 年前
        1
  •  38
  •   GManNickG    13 年前

    像这样:

    T a{};
    

    在C++11之前,这是最简单的近似:

    T a = T();
    

    但这需要 T

        2
  •  1
  •   xunzhang    9 年前

    C++11中的类模板字段具有相同的语法:

    template <class T>
    class A {
      public:
        A() {}
        A(T v) : val(v) {}
      private:
        T val{};
    };