c++ 调用函数错误没有匹配的函数[已关闭]

dxxyhpgq  于 2023-02-01  发布在  其他
关注(0)|答案(1)|浏览(114)

这个问题是由打字错误或无法再重现的问题引起的。虽然类似的问题在这里可能是on-topic,但这个问题的解决方式不太可能帮助未来的读者。
22分钟前就关门了。
Improve this question
当我试图调用我的函数时,我得到错误:
没有与"modifiedSortGPA"调用匹配的函数

void modifiedSortGPA(double, int, string, int); //function prototype

...

// my arrays
int netID[NUM_ELMTS]; // Original netID array
string major[NUM_ELMTS]; // Original major array
double GPA[NUM_ELMTS]; // Original GPA array

double sortedGPAbyGPA[NUM_ELMTS]; // GPA array, sorted by GPA
int sortedNetIDbyGPA[NUM_ELMTS];
string sortedMajorbyGPA[NUM_ELMTS];
    
for (int i = 0; i <= count; i++) //populating my arrays
{
    GPA[i] = sortedGPAbyGPA[i];
    netID[i] = sortedNetIDbyGPA[i];
    major[i] = sortedMajorbyGPA[i];
}

modifiedSortGPA(sortedGPAbyGPA, sortedNetIDbyGPA, sortedMajorbyGPA, count); //function call in main

...

void modifiedSortGPA(double array1[], int array2[], string array3[], int size) //function
{
    int startScan, minIndex, minValue;
    for (startScan = 0; startScan < (size - 1); startScan++)
    {
        minIndex = startScan;
        minValue = array1[startScan];
        for(int index = startScan + 1; index < size; index++)
        {
            if (array1[index] < minValue)
            {
                minValue = array1[index];
                minIndex = index;
            }
        }
        array1[minIndex] = array1[startScan];
        array1[startScan] = minValue;
    }    
}

我试着确保在我的原型、函数调用和函数定义中没有拼写错误,我期望我的函数打印排序后的数组。

enyaitl3

enyaitl31#

我试图确保在我的原型、函数调用和函数定义中没有拼写错误。
然而,你没有成功,因为你的函数的 * 声明 * 与你的函数的 * 定义 * 不匹配。你传递给函数的值与 * 声明 * 不匹配,因此出现了错误。
在声明中,第一个参数采用单个double,第二个参数采用单个int,第三个参数采用单个string
但是,在您的定义中,第一个参数采用double[]数组,第二个参数采用int[]数组,第三个参数采用string[]数组。
您需要修复声明以匹配定义,例如:

void modifiedSortGPA(double[], int[], string[], int); //function prototype

顺便说一句:数组是0索引的,这意味着第一个索引是0,最后一个索引比元素计数小1。但是用数据填充数组的for循环超出了数组末尾1个元素,这是 * 未定义的行为 *。它试图访问count处的元素作为最后一个索引,但最后一个索引是count-1。您需要修复此问题,方法是在循环条件中使用<而不是<=,例如:

for (int i = 0; i < count; i++) //populating my arrays

相关问题