【发布时间】:2020-04-10 13:12:06
【问题描述】:
我正在尝试将一个类作为模板参数传递。但是这个类只有一个强制构造函数,我们必须传递一个整数值。所以我试图找到一种方法来初始化模板的构造函数参数。
#include <iostream>
template <class F>
class Class1 {
public:
int i = 0;
F f;
Class1() { i = f.u; }
};
class Class2 {
public:
int u = 5;
Class2(int j) { u = j; }
};
int main() {
Class1 <Class2>c;
std::cout << c.i << std::endl;
}
当然,这给了我一个错误“Class2 没有合适的默认构造函数可用”。说我想传递不同的类,构造函数在 Class1 的模板中没有相同数量的参数,有没有办法初始化模板的构造函数?我正在寻找 Class1 c 之类的东西;
【问题讨论】:
-
Class1的目的是什么?目前看起来它只是包装了一个F实例,然后保存了它的一个数据成员的另一个副本,这似乎毫无意义。
标签: c++ templates initialization