我正在开发一个使用模板化对象作为矢量参数的项目。我必须严格使用对象和任何原始类型。我正在研究一个较小的例子,以帮助我把握更大的局面。
到目前为止,这就是我所拥有的:
#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;
}
我不知道如何向此向量添加元素。
答案 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