模板<class T> 错误:在“template”之前需要初始化程序

3
嗨,stackoverflow论坛的朋友们, 我直接从教材《绝对C++ 第四版 Savitch ISBN-13: 978-0-13-136584-1》中输入了这段代码。 一个通用排序函数。 第728页上的sort.cpp在第17行给出错误: 第17行:错误:在“模板”之前期望初始化程序
有人可以帮忙吗?因为我希望教材“就能工作”,这样我就可以学习代码而不会陷入我不理解的额外错误。 是的,我已经进行了研究,但是由于我专注于更简单的学习点——通用排序函数,所以对这个错误的研究是有限的,希望学习通用模板,以便学习哈希表……呼哧呼哧,深呼吸一下。
我无法将错误发生的第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;
}
2个回答

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

似乎您在声明函数swapValues()后缺少一个;。另外,我不知道为什么将函数声明悬挂在两个函数定义之间,尤其是在使用该函数的函数之后。

谢谢您的回复。我尝试了那个方法,但似乎在教材中有一个不清楚的注释导致问题得不到解决。 我已经添加了一个位于链接8至14页的主体。{ T temp; temp = variable1; variable1 = variable2; variable2 = temp; }现在它终于编译成功了。我发现编程教材需要更加“用户友好”的学习方式,因为这个教材中关于添加主体的注释并不清晰,只会让学习者陷入更深的困惑之中。 - user1416486
@user1416486:我没有这本书,也从未使用过,所以无法对其发表评论,但根据你的描述,它似乎是一本格式很糟糕的书。我建议你放弃它,选择一本好的C++书籍 - Alok Save

0

我想你在这里错过了分号

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接