3 Stimmen

Template<class T> Fehler: Initialisierer vor 'template' erwartet

Hallo Leute im Stackoverflow-Forum, Ich habe diesen Code direkt aus dem Lehrbuch abgetippt, Absolute C++ Vierte Auflage Savitch ISBN-13: 978-0-13-136584-1. Eine generische Sortierfunktion. sort.cpp auf Seite 728 gibt den Fehler in Zeile 17: Zeile 17: Fehler: Initialisierer vor 'template' erwartet

Könnte mir jemand helfen, denn ich würde erwarten, dass das Lehrbuch 'einfach funktioniert', damit ich den Code studieren kann und nicht an zusätzlichen Fehlern hängen bleibe, die ich nicht verstehe. Ja, ich habe recherchiert, jedoch ist diese Fehlerrecherche begrenzt, da ich mich auf den einfacheren Lernpunkt der generischen Sortierfunktion konzentriere, in der Hoffnung, das generische Template zu lernen, in der Hoffnung, die Hashtabelle zu lernen...puhhh, tief Luft holen.

Ich kann nicht die Zeile 17 fett markieren, wo der Fehler auftritt.

// Dies ist die Datei sort.cpp.
template
void sort(T a[], int numberUsed)
{
    int indexOfNextSmallest;
    for (int index = 0; index < numberUsed - 1; index++)
    {//Setze den richtigen Wert in a[index]:
        indexOfNextSmallest =
            indexOfSmallest(a, index, numberUsed);
        swapValues(a[index], a[indexOfNextSmallest]);
    //a[0] <= a[1] <=...<= a[index] sind die kleinsten der ursprünglichen Array-Elemente. Der Rest der Elemente befindet sich an den verbleibenden Positionen.
    }
}
template
void swapValues(T& variable1, T& variable2)
template
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 ist das kleinste von a[startIndex] bis a[index].
        }
    return indexOfMin;
}

5voto

Alok Save Punkte 196241
template
void swapValues(T& variable1, T& variable2);
                                         ^^^^^^
template
int indexOfSmallest(const T a[], int startIndex, int numberUsed)

Es scheint, dass Ihnen ein ; nach der Deklaration der Funktion swapValues() fehlt.

Übrigens weiß ich nicht, warum die Funktionsdeklaration zwischen zwei Funktionsdefinitionen platziert ist, insbesondere nach der Funktion, die sie verwendet.

0voto

ravi Punkte 3224

Ich glaube, hier haben Sie das Semikolon verpasst

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X