std::valarray< double > myArray(3)
生成长度为3的valarray
,初始化为零。
std::valarray< double > myArray(1,3)
生成长度为3的valarray
,初始化为1。
std::valarray< double > myArray(0,3)
生成error: call to constructor of 'std::valarray<double>' is ambiguous
。
我当然可以使用myArray(3)
并添加一条评论,确认这是初始化为零,但是为了我自己的理解,我希望有人可以解释为什么这是不明确的 - 它是否与另一个构造函数冲突我错过了哪种方式?
答案 0 :(得分:4)
您的第三次调用与构造函数valarray (const T* p, size_t n);
冲突。这是因为0
很容易转换为NULL指针,因为它是一个double。您可以通过明确声明使用double来解决此问题:
std::valarray< double > myArray((double)0,3)