3

嗨 stackoverflow 论坛的人,我直接从教科书 Absolute C++ 第四版 Savitch ISBN-13:978-0-13-136584-1 中输入了这段代码。通用排序函数。第 728 页上的 sort.cpp 在第 17 行给出了错误: 第 17 行:错误:“模板”之前的预期初始化程序

有人可以帮忙吗,因为我希望教科书“正常工作”,这样我就可以研究代码,而不会陷入我不理解的额外错误。是的,我已经研究过了,但是这个错误的研究是有限的,因为我专注于通用排序函数的更简单的学习点,希望学习通用模板,希望学习哈希表...phewww,喘口气。

我无法在发生错误的第 17 行加粗。

// This is the file sort.cpp.
template<class T>
void sort(T a[], int numberUsed)
{
    int indexOfNextSmallest;
    for (int index = 0; index < numberUsed - 1; index++)
    {//Place the correct value in a[index]:
        indexOfNextSmallest =
            indexOfSmallest(a, index, numberUsed);
        swapValues(a[index], a[indexOfNextSmallest]);
    //a[0] <= a[1] <=...<= a[index] are the smallest of the original array
    //elements. The rest of the elements are in the remaining positions.
    }
}
template<class T>
void swapValues(T& variable1, T& variable2)
template<class T>
int indexOfSmallest(const T a[], int startIndex, int numberUsed)
{
    T min = a[startIndex];
    int indexOfMin = startIndex;
    for (int index = startIndex + 1; index < numberUsed; index++)
        if (a[index] < min)
        {
            min = a[index];
            indexOfMin = index;
            //min is the smallest of a[startIndex] through a[index].
        }
    return indexOfMin;
}
4

2 回答 2

6
template<class T>
void swapValues(T& variable1, T& variable2);
                                         ^^^^^^
template<class T>
int indexOfSmallest(const T a[], int startIndex, int numberUsed)

看来您缺少;函数的 after 声明swapValues()

顺便说一句,我不知道为什么函数声明被放置在两个函数定义之间,尤其是在使用它的函数之后。

于 2012-05-25T04:10:48.430 回答
0

我想你在这里错过了分号

void swapValues(T& variable1, T& variable2);

于 2012-05-25T04:11:34.387 回答