模板化的对象传染媒介

时间:2016-12-11 16:53:23

标签: c++ templates object vector

我正在开发一个使用模板化对象作为矢量参数的项目。我必须严格使用对象和任何原始类型。我正在研究一个较小的例子,以帮助我把握更大的局面。

到目前为止,这就是我所拥有的:

#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;
}

我不知道如何向此向量添加元素。

1 个答案:

答案 0 :(得分:4)

以示例

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

如果你可以编译C ++ 11或更新版本,甚至更简单

v.emplace_back(4)

但是,在这两种情况下,您都必须修改Thing的构造函数,如下所示

Thing(T type) : memVar(type) {
}

或在U

中添加默认构造函数
U () {
}

因为您的Thing构造函数尝试在没有参数的情况下初始化memVar,然后在type中复制memVar