2016-12-11 82 views
1

我正在使用模板對象作爲向量參數的項目。我必須嚴格使用對象和任何原始類型。我正在製作一個較小的示例來幫助我掌握更大的圖景。模板對象向量

到目前爲止,這裏是我有:

#include <iostream> 
#include <vector> 
using namespace std; 

template <class T> 
class Thing { 
    public: 

     Thing(T type) { 
      memVar = type; 
     } 

     T getMemVar() { 
      return memVar; 
     } 

    private: 
     T memVar; 
}; 

class U { 
    public: 

     U(int i) { 
      j = i; 
     } 

     int getJ() { 
      return j; 
     } 

    private: 

     int j; 

}; 

int main() { 
    // your code goes here 
    vector < Thing <U> > v; 

    v.push_back(); // idk how to add new elements to this vector. 
        // I've tried: v.push_back(Thing <U> i(U)), 
        //    v.push_back(U obj(4)), etc etc... 

    return 0; 
} 

我不知道如何將元素添加到這個矢量。

回答

4

例如

v.push_back(Thing<U>(4)); 

如果你可以編譯C++ 11或更高,更簡單

v.emplace_back(4) 

但是,在這兩種情況下,你有如下

修改的 Thing構造
Thing(T type) : memVar(type) { 
} 

或在U中添加默認構造函數

U() { 
} 

因爲你Thing構造嘗試初始化memVar沒有參數和旁邊memVar

+0

它的工作原理複製type!非常感謝您對此的見解。我花了3天的時間試圖弄清楚這一點。我無法表達我多麼感恩。 –

+0

@TheoHandy - 你很好;如果你可以編譯C++ 11或更新的版本,改進了anser。 – max66