Wie, um eine überlastung << cout für eine Vorlage-Klasse?

Uns beigebracht, wie man überlastung cout den anderen Tag für unser Programm zu cout, aber ich weiß nicht, wie man es machen Ausgabe alles.

 template <NODETYPE>
 friend ostream &operator <<(ostream &, List<NODETYPE>& );


template<typename NODETYPE>
ostream &operator <<(ostream& output, List<NODETYPE>& value)
{ 
    output << value;
    return output;
}

Allerdings, mein Programm hat mindestens 5 Objekte zur Ausgabe und zwei von Ihnen sind Doppelzimmer. Ich bekomme eine Fehlermeldung, dass der sagt: "Doppel ist kein Gültiger Typ für eine template-Konstante parameter'

Meine zwei Probleme sind: Wie mache ich die Ausgabe alle meine Objekte und nicht nur die ersten Objekts; und wie bekomme ich das doppelte ausgeben. Bitte und danke!

EDIT: RIESIGE EDIT:::

Okay, ich erkannte, dass ich etwas falsch machen, neu arrangiert meine header-und Quelldateien.

Und dann habe ich auch gemerkt, dass fehlt mein Dozent ist Klasse, war einer der größten Fehler die ich je gemacht habe. Mein Nächster Fehler war, denn Sie alle meine Annahmen, und nicht die Informationen, die ich nahm.

In meiner Aufgabe heißt es: • Schreiben Sie eine Zuweisungs-operator und eine friend-Funktion zur Ausgabe der verketteten Liste.

in fast jeder anderen Zeile meiner main-Funktion(eine Funktion, die darf ich nicht verändern), es ist ein cout:

List<int> Li, Li2, Li3;
List<double> Ld, Ld2;

Diese sind meine Objekte. Und alle meine couts in etwa so Aussehen:

  cout << "Ld is: " << Ld << endl;

Nach Neuordnung meiner header-und Quelldateien, bekam ich diese Fehlermeldung:
"no match for 'operator<<' in 'std::operator<<[with_Traits = std::char_traits] (((std::basic_ostream>&)(& std::cout)), ((const char*) 'Ld"))<

Ich erhalten, dass für jede einzelne cout-Anweisung, die ich habe. Es ist mehr Informationen, als Ld exit-status 1 oder was auch immer, so werde ich aus diesem.

Ich bin immer noch nicht voll scharf auf mit diesem ostream überladen-Funktion, so dass jede Hilfe sehr geschätzt und ich danke Ihnen so sehr für Ihre Zeit!

EDIT::--

Habe ich fast alle meine code in diesem post: collect2: Ld zurückgegeben, 1 exit status build machen Fehler

Wenn mir jemand helfen könnte mit der überladung, die groß sein würde, weil ich denke, es ist das einzige problem habe ich noch übrig, also habe ich herausfinden können, alles andere.

Dank!!

Sind diese beiden Deklarationen identisch, oder habe ich vergessen meine Lesebrille?
So schlecht, haha, Sie sind das gleiche..my bad..ich werde es Bearbeiten
Ich verstehe nicht, wie es zu dem Fehler verbunden ist, um die Deklaration/definition oben.
Die Erklärung (D. H. das erste Stück code) sollte geändert werden, um template <typename NODETYPE> (d.h. die typename fehlt). Ist dass das problem?
Definition des Betreibers führt zu einer unendlichen Rekursion, nicht?

InformationsquelleAutor Nelliel | 2012-09-20

Schreibe einen Kommentar