C++ 没有重载函数的实例 "sqrt" 与参数列表匹配 - 试图查找结构类型的数字数组是否是完美的正方形
C++ No instance of overloaded function "sqrt" matches the argument list - Trying to find if a struct type array of numbers are perfect squares
我有一项 C++ 作业要做,我想找出数组中的数字是否是完美的平方数。此外,该数组是动态分配的。这是我的代码:
myVector perfectSquare(myVector *vect)
{
myVector rez;
rez.length = 0;
for (int i = 0; i < vect->length; i++)
if (vect[i] == sqrt(vect[i])*sqrt(vect[i])) // here it gives error
{
addToVector(&rez, vect->arr[i]);
}
return rez;
}
vect
不是数组,所以不能用vect[i]
,应该写成vect->arr[i]
——->
运算符用来访问一个成员结构。您还应该 #include <math.h>
,以防您忘记它。
vect
是 指针 到 结构 和 arr
字段,所以你需要确定你要查找的字段:
sqrt(vect->arr[i]) * sqrt(vect->arr[i])
请注意,写 vect[i]
意味着很多 vect 元素 并试图获得 i'th一个 vect 元素。但是写 vect->arr[i]
你的意思是 指针 指向某个确切的 vect 元素 ,试图评估它是 arr
field 并获取 arr
字段的 i'th 个元素。
我有一项 C++ 作业要做,我想找出数组中的数字是否是完美的平方数。此外,该数组是动态分配的。这是我的代码:
myVector perfectSquare(myVector *vect)
{
myVector rez;
rez.length = 0;
for (int i = 0; i < vect->length; i++)
if (vect[i] == sqrt(vect[i])*sqrt(vect[i])) // here it gives error
{
addToVector(&rez, vect->arr[i]);
}
return rez;
}
vect
不是数组,所以不能用vect[i]
,应该写成vect->arr[i]
——->
运算符用来访问一个成员结构。您还应该 #include <math.h>
,以防您忘记它。
vect
是 指针 到 结构 和 arr
字段,所以你需要确定你要查找的字段:
sqrt(vect->arr[i]) * sqrt(vect->arr[i])
请注意,写 vect[i]
意味着很多 vect 元素 并试图获得 i'th一个 vect 元素。但是写 vect->arr[i]
你的意思是 指针 指向某个确切的 vect 元素 ,试图评估它是 arr
field 并获取 arr
字段的 i'th 个元素。