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 个元素。