我有一个C ++模板化类,其构造函数有一个默认参数。
可以使用非默认arg,和作为数组进行实例化吗? (如果没有,为什么不呢?)
任何一个都可以,但不能同时使用(在g ++ 4.6.3中):
template <class T> class Cfoo {
public:
int x;
Cfoo(int xarg=42) : x(xarg) {}
};
Cfoo<int> thisWorks[10];
Cfoo<int> thisWorks(43);
Cfoo<int> thisFails(43)[10];
Cfoo<int> thisFails[10](43);
Cfoo<int>[10] thisFails(43);
// (even crazier permutations omitted)
答案 0 :(得分:1)
您无法使用非默认构造函数创建数组。
答案 1 :(得分:1)
你是对的:你只能在数组中默认构造元素,而你可以将任何你想要的参数传递给单个对象构造。
如果您需要一个集合,在C ++ 98中可以使用std::vector
:
std::vector<Cfoo<int> >(10, 43);