C++:class 使用可变参数模板的包装器
C++: class wrapper using variadic templates
我想为其他 class objs 制作一个包装器。初始化包装器 obj 时,我希望能够将我想传递给内部 obj 的参数传递给它的构造函数:
template <class U, class... Args> struct T {
T(Args... args) {
data = new U(args...);
}
U* data;
};
我做了一个假人Obj
:
struct Obj {
Obj(int a, int b) {
this->a = a;
this->b = b;
}
int a;
int b;
};
现在我不想使用 Obj obj(1, 2)
来初始化它,而是想使用包装器,因为我会进行一些计算和管理。所以我试图实现的是:
T<Obj> obj(1, 2); // doesn't work, this is what I want to achieve
T<Obj, int, int> obj(1, 2); // works, but it's not what I want it to look like
class... Args
应该是构造函数的模板参数,而不是整个class。你也应该在这里使用完美转发,即使它对struct Obj
.
无关紧要
template <class U>
struct T
{
template <class ...Args>
T(Args &&... args)
{
data = new U(std::forward<Args>(args)...);
}
U *data;
};
我想为其他 class objs 制作一个包装器。初始化包装器 obj 时,我希望能够将我想传递给内部 obj 的参数传递给它的构造函数:
template <class U, class... Args> struct T {
T(Args... args) {
data = new U(args...);
}
U* data;
};
我做了一个假人Obj
:
struct Obj {
Obj(int a, int b) {
this->a = a;
this->b = b;
}
int a;
int b;
};
现在我不想使用 Obj obj(1, 2)
来初始化它,而是想使用包装器,因为我会进行一些计算和管理。所以我试图实现的是:
T<Obj> obj(1, 2); // doesn't work, this is what I want to achieve
T<Obj, int, int> obj(1, 2); // works, but it's not what I want it to look like
class... Args
应该是构造函数的模板参数,而不是整个class。你也应该在这里使用完美转发,即使它对struct Obj
.
template <class U>
struct T
{
template <class ...Args>
T(Args &&... args)
{
data = new U(std::forward<Args>(args)...);
}
U *data;
};