Ich schrieb eine kurze Vorlage-Methode für ein Schulprojekt, und bekomme seltsame Syntaxfehler, die ich nicht verstehe. Sie haben etwas mit der Vorlage zu tun, die ich deklariert habe (beim Auskommentieren des Headers, der die Vorlage enthält, verschwinden alle Fehler in main()), aber ich kann nicht herausfinden, was vor sich geht. Ich schließe und "intersectHeader.h" ein und verwende den std-Namespace. In meiner main() - Funktion deklariert ich nur einen Vektor:Syntaxfehler in Template-Methode, die ich nicht verstehe
vector v1; Das gibt mir über diese Fehler
template<typename T> vector<T> intersect(const vector<T> & v1, const vector<T> & v2) { vector<T> resultVector; bool duplicate = false; for (int i = 0; i < v1.size(); i++) { duplicate = false; for (int j = 0; j < v2.size(); j++) { if (v1[i] == v2[j]) { for (int a = 0; a < resultVector.size(); a++) { if (v1[i] == resultVector[a]) { duplicate = true; break; } } if (!duplicate) { resultVector.push_back(v1[i]); } } } } return resultVector; }
: - Fehler: C2065 'string' nicht deklarierter Bezeichner, C2065 'v1' nicht deklarierter Bezeichner, C2065 'Vektor' nicht deklarierter Bezeichner
Dies ist die Vorlage:
C2988 unkenntlich Template-Deklaration/definition, C2143 Syntax Fehler fehlen; vor '<', C2059 Syntaxfehler '<'.
All das in der zweiten Zeile auftreten "Vektor schneiden (const Vektor & v1, const Vektor & v2)"
Ich weiß nicht, warum die <> sind nicht im Code zeigt, aber die Erklärung ist: template Vektor schneiden (const Vektor & v1, const Vektor & v2) und die variable Vektor Ergebnisvektor; –
Rick
Kopieren Sie bitte die vollständige Fehlerausgabe in den Hauptteil der Frage, verwenden Sie eine Codeformatierung, so dass alle Zeichen angezeigt werden. Auch bitte (z. B. Kommentare), wo im Code die Fehler sind. Und wenn möglich, versuchen Sie, ein [minimales, vollständiges und verifizierbares Beispiel] (http://stackoverflow.com/help/mcve) zu erstellen, das Sie uns zeigen können. –
Zeigen Sie mindestens alle Includes und "using namespace" -Dinge, die Sie haben. Oder besser, entfernen Sie alle using-Anweisungen und setzen Sie die entsprechenden Namen mit dem entsprechenden Qualifier voran. – Mat