在模板类构造函数中,通过T *p = new T[10](userInputData)
初始化数组但是G++parenthesized initializer in array new
,该如何处理呢?
问题是
尽管我们可以使用空括号来值初始化数组的元素,但我们不能在括号内提供元素初始化器。
这意味着,
int *pia2 = new int[10](); //VALID, block of 10 ints value initialized to 0
int *pia3 = new int[10](55); //NOT VALID
出于同样的原因,你会出现上述错误。特别是,您提供了初始值设定项userInputData
。
若要解决此错误,必须删除初始值设定项userInputData
。您也可以使用std::fill_n
,如下所示。
T *p = new T[10];
std::fill_n(p, 10, userInputData);