Fehlende Vorlage Argumente before '.' token

Ich versuche zu organisieren, mein Programm in Funktionen und haben lief in dieses,

Fehler: "missing template-Argumente before '.' token"

sobald ich versuche, führen Sie den code in der Funktion, es funktioniert gut, wenn die nur in main(). Jeder, der sich mit diesem Fehler wissen, was das Problem sein kann?

Hinweis, den auskommentierten code entfernt den Fehler aber verwirrt mit der geordneten Liste class und setzt seine Länge oder etwas, wodurch die orderedlist.getlength() Funktion return 0, das macht keiner der code in der while() Schleife ausführen.

Funktion:

void rentFilm(char* filmId, char* custId, char* rentDate, char* dueDate, int numFilm)
{
    //orderedList <filmType> orderedList(numFilm);
    //filmType newItem;
    int index = 0;
    bool found = false;

    while (index < orderedList.getLength() && !found)
        {
            cout << "test" << endl;
        if (strncmp(filmId,orderedList.getAt(index).number,6) == 0 && strncmp("0000",orderedList.getAt(index).rent_id,5) == 0)//If that film is rented by NO customer
            {
                cout << "test" << endl;
                found = true;//customer can rent it
                strcpy(newItem.number,filmId);
                orderedList.retrieve(newItem);
                orderedList.remove(newItem);
                strcpy(newItem.rent_id,custId);
                strcpy(newItem.rent_date,rentDate);
                strcpy(newItem.return_date,dueDate);
                orderedList.insert(newItem);
                cout << "Rent confirmed!" << endl;
            }
        else
            {
                if (strncmp(filmId,orderedList.getAt(index).number,6) > 0 || strncmp("0000",orderedList.getAt(index).rent_id,5) > 0)
                    {
                        ++ index;
                    }
                else
                    {
                     throw string ("Not in list");
                    }
            }
        }
}

Einfügen in orderedList Klasse (wobei die Länge bestimmt):

template <class elemType>
void orderedList<elemType>::insert(const elemType& newItem)
{
     int index = length - 1;
     bool found = false;

     if (length == MAX_LIST)
         throw string ("List full - no insertion");

         //index of rear is current value of length

     while (! found && index >= 0)
        if (newItem < list[index])
        {
            list[index + 1] = list [index];  //move item down
            --index;
        }
        else
            found = true;

     list [index + 1] = newItem;  //insert new item
     ++length;
}

code in main, wo die Liste ist gefüllt:

filmFile.open("films.txt", ios::in);
filmFile >> numFilm;
filmFile.get();

orderedList <filmType> orderedList(numFilm);
filmType newItem;

readString(filmFile, newItem.number,5);
    for (int i = 0; i < numFilm; i++)
    {
         newItem.copy = filmFile.get();
     readString(filmFile, newItem.title,30);
         readString(filmFile, newItem.rent_id,4);
         readString(filmFile, newItem.rent_date,8);
         readString(filmFile, newItem.return_date,8);
         filmFile.get();

         orderedList.insert (newItem);//puts filmType struct into the ordered list.

         readString(filmFile, newItem.number,5);
    }

Bitte lassen Sie mich wissen, wenn code von einer beliebigen anderen Stelle im Programm wäre hilfreich bei der Beurteilung dieser Fehler.

Was ist orderedlist ? Ist es ein class ?
Ja, es ist eine Klasse, und "orderedList" (numFilm) ist ein Konstruktor
Es scheint nicht ein problem mit diesem code. Vielleicht möchten Sie minimal code für class orderlist.
Hinzugefügt ein bisschen relevanten code, hilft das überhaupt?
Sie sind nirgendwo in der Nähe bereit zu sein, arbeiten mit Vorlagen noch. Gehen Sie zurück und studieren Sie den Unterschied zwischen einer Klasse und einer Instanz der Klasse.

InformationsquelleAutor darko | 2011-11-04

Schreibe einen Kommentar