Sehr geehrte Community, was übersehe ich. Danke für die Hilfe. IDE Microsoft Visual Studio 2017 Community Fehlermeldung: Schweregrad Code Beschreibung Projekt Datei Zeile Unterdrückungszustand Fehler C2995 "const myVector<T> &myVector<T>::operator =(const int)": Funktionsvorlage wurde bereits definiert. bsplForum d:\dokumente\visual studio 2017\projekte\bsplforum\bsplforum\myvector.h 32 Fehler C2988 Unerkannte Vorlagendeklaration/-definition bsplForum d:\dokumente\visual studio 2017\projekte\bsplforum\bsplforum\mylist.h 22 Fehler C2143 Syntaxfehler: Es fehlt ";" vor "<" bsplForum d:\dokumente\visual studio 2017\projekte\bsplforum\bsplforum\mylist.h 22 Fehler C7525 Inlinevariablen erfordern mindestens "/std:c++17". bsplForum d:\dokumente\visual studio 2017\projekte\bsplforum\bsplforum\mylist.h 22 Fehler C4430 Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt. bsplForum d:\dokumente\visual studio 2017\projekte\bsplforum\bsplforum\mylist.h 22 Fehler C2059 Syntaxfehler: "<" bsplForum d:\dokumente\visual studio 2017\projekte\bsplforum\bsplforum\mylist.h 22 Fehler C2143 Syntaxfehler: Es fehlt ";" vor "{" bsplForum d:\dokumente\visual studio 2017\projekte\bsplforum\bsplforum\mylist.h 23 Fehler C2447 "{": Funktionsheader fehlt - Parameterliste im alten Stil? bsplForum d:\dokumente\visual studio 2017\projekte\bsplforum\bsplforum\mylist.h 23 Fehler C4430 Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt. bsplForum d:\dokumente\visual studio 2017\projekte\bsplforum\bsplforum\mylist.h 28 Fehler C2988 Unerkannte Vorlagendeklaration/-definition bsplForum d:\dokumente\visual studio 2017\projekte\bsplforum\bsplforum\mylist.h 28 Fehler C2143 Syntaxfehler: Es fehlt ";" vor "<" bsplForum d:\dokumente\visual studio 2017\projekte\bsplforum\bsplforum\mylist.h 28 Fehler C7525 Inlinevariablen erfordern mindestens "/std:c++17". bsplForum d:\dokumente\visual studio 2017\projekte\bsplforum\bsplforum\mylist.h 28 Fehler C2373 "myList": Neudefinition; unterschiedliche Modifizierer bsplForum d:\dokumente\visual studio 2017\projekte\bsplforum\bsplforum\mylist.h 28 Fehler C2059 Syntaxfehler: "<" bsplForum d:\dokumente\visual studio 2017\projekte\bsplforum\bsplforum\mylist.h 28 Fehler C2039 "=": Ist kein Element von "`global namespace'" bsplForum d:\dokumente\visual studio 2017\projekte\bsplforum\bsplforum\mylist.h 28 Fehler C2143 Syntaxfehler: Es fehlt ";" vor "{" bsplForum d:\dokumente\visual studio 2017\projekte\bsplforum\bsplforum\mylist.h 29 Fehler C2447 "{": Funktionsheader fehlt - Parameterliste im alten Stil? bsplForum d:\dokumente\visual studio 2017\projekte\bsplforum\bsplforum\mylist.h 29 Fehler C4430 Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt. bsplForum d:\dokumente\visual studio 2017\projekte\bsplforum\bsplforum\myvector.h 15 Fehler C2143 Syntaxfehler: Es fehlt "," vor "<" bsplForum d:\dokumente\visual studio 2017\projekte\bsplforum\bsplforum\myvector.h 15 Fehler C4430 Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt. bsplForum d:\dokumente\visual studio 2017\projekte\bsplforum\bsplforum\myvector.h 16 Fehler C2143 Syntaxfehler: Es fehlt "," vor "<" bsplForum d:\dokumente\visual studio 2017\projekte\bsplforum\bsplforum\myvector.h 16 Fehler C4430 Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt. bsplForum d:\dokumente\visual studio 2017\projekte\bsplforum\bsplforum\myvector.h 22 Fehler C2988 Unerkannte Vorlagendeklaration/-definition bsplForum d:\dokumente\visual studio 2017\projekte\bsplforum\bsplforum\myvector.h 22 Fehler C2143 Syntaxfehler: Es fehlt "," vor "<" bsplForum d:\dokumente\visual studio 2017\projekte\bsplforum\bsplforum\myvector.h 22 Fehler C4430 Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt. bsplForum d:\dokumente\visual studio 2017\projekte\bsplforum\bsplforum\myvector.h 28 Fehler C2988 Unerkannte Vorlagendeklaration/-definition bsplForum d:\dokumente\visual studio 2017\projekte\bsplforum\bsplforum\myvector.h 28 Fehler C2143 Syntaxfehler: Es fehlt "," vor "<" bsplForum d:\dokumente\visual studio 2017\projekte\bsplforum\bsplforum\myvector.h 28 Fehler C2988 Unerkannte Vorlagendeklaration/-definition bsplForum d:\dokumente\visual studio 2017\projekte\bsplforum\bsplforum\mylist.h 22 Fehler C2143 Syntaxfehler: Es fehlt ";" vor "<" bsplForum d:\dokumente\visual studio 2017\projekte\bsplforum\bsplforum\mylist.h 22
Deine Include-Guards sind falsch. Die müssen natürlich den ganzen Header umfassen und nicht nur den halben. Außerdem hast du eine Überkreuz-Abhängigkeit. myVector.h inkludiert myList.h und umgekehrt. Das funktioniert natürlich nicht.
:
Bearbeitet durch User
Danke für deine Antwort Rolf. jetzt haben sich unsere Antworten überkreuzt. ;) Mit Include Guards, meinst du die Präprozessor Direktiven #Ifdefine ... , um den gesamten Code der **.h. Die Fehlermeldungen werden weniger. Aber.. 1. Habe ich schon ausprobiert ... kein voller Erfolg. 2. War das auch die Auto Quellcode Generierung von von Visual Studio. MfG Meik Fehlermedlungen Schweregrad Code Beschreibung Projekt Datei Zeile Unterdrückungszustand Fehler C2447 "{": Funktionsheader fehlt - Parameterliste im alten Stil? bsplForum d:\dokumente\visual studio 2017\projekte\bsplforum\bsplforum\mylist.h 29 Fehler C4430 Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt. bsplForum d:\dokumente\visual studio 2017\projekte\bsplforum\bsplforum\mylist.h 14 Fehler C2143 Syntaxfehler: Es fehlt "," vor "<" bsplForum d:\dokumente\visual studio 2017\projekte\bsplforum\bsplforum\mylist.h 14 Fehler C4430 Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt. bsplForum d:\dokumente\visual studio 2017\projekte\bsplforum\bsplforum\mylist.h 15 Fehler C2143 Syntaxfehler: Es fehlt "," vor "<" bsplForum d:\dokumente\visual studio 2017\projekte\bsplforum\bsplforum\mylist.h 15 Fehler C4430 Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt. bsplForum d:\dokumente\visual studio 2017\projekte\bsplforum\bsplforum\mylist.h 22 Fehler C2988 Unerkannte Vorlagendeklaration/-definition bsplForum d:\dokumente\visual studio 2017\projekte\bsplforum\bsplforum\mylist.h 22 Fehler C2143 Syntaxfehler: Es fehlt "," vor "<" bsplForum d:\dokumente\visual studio 2017\projekte\bsplforum\bsplforum\mylist.h 22 Fehler C4430 Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt. bsplForum d:\dokumente\visual studio 2017\projekte\bsplforum\bsplforum\mylist.h 28 Fehler C2988 Unerkannte Vorlagendeklaration/-definition bsplForum d:\dokumente\visual studio 2017\projekte\bsplforum\bsplforum\mylist.h 28 Fehler C2143 Syntaxfehler: Es fehlt "," vor "<" bsplForum d:\dokumente\visual studio 2017\projekte\bsplforum\bsplforum\mylist.h 28 Fehler C2953 "myList": Klassenvorlage wurde bereits definiert. bsplForum d:\dokumente\visual studio 2017\projekte\bsplforum\bsplforum\mylist.h 17 Fehler C2988 Unerkannte Vorlagendeklaration/-definition bsplForum d:\dokumente\visual studio 2017\projekte\bsplforum\bsplforum\mylist.h 22 Fehler C2059 Syntaxfehler: "const" bsplForum d:\dokumente\visual studio 2017\projekte\bsplforum\bsplforum\mylist.h 22 Fehler C2143 Syntaxfehler: Es fehlt ";" vor "{" bsplForum d:\dokumente\visual studio 2017\projekte\bsplforum\bsplforum\mylist.h 23 Fehler C2447 "{": Funktionsheader fehlt - Parameterliste im alten Stil? bsplForum d:\dokumente\visual studio 2017\projekte\bsplforum\bsplforum\mylist.h 23 Fehler C2062 "unknown-type"-Typ unerwartet bsplForum d:\dokumente\visual studio 2017\projekte\bsplforum\bsplforum\mylist.h 28 Fehler C2143 Syntaxfehler: Es fehlt ";" vor "{" bsplForum d:\dokumente\visual studio 2017\projekte\bsplforum\bsplforum\mylist.h 29
:
Bearbeitet durch User
Ja deine Überkreuz Erklärung macht Sinn. "Damm it!" Stehe zurzeit ein wenig neben mir. Und bin auch kein Template Pro. Kann ich die den im Header im Vorwege deklarieren... Oder wie?
Meik J. schrieb: > Kann ich die den im Header im Vorwege deklarieren... > Oder wie? Das ist gerade erst hier thematisiert gewesen. Zwei Threads weiter: Beitrag "C++: template class vorwärts deklarieren?" Und noch was:
1 | template<typename T> |
2 | inline const myList<T>& myList<T>::operator=(const myVector<T>& inst) |
3 | {
|
4 | //code
|
5 | return this; |
6 | }
|
Es muss *this heißen.
:
Bearbeitet durch User
Nochmals danke Rolf, ja den anderen Thread hatte ich schon gesehen. Bin heute nur echt reif für den Feierabend. Und bekomme das nicht implementiert. Und der Inhalt des this Zeigers ist doch die Adresse des Objekt's. Und der Inhalt einer Referenz ist doch auch diese Adresse ?! Ich gebe ja nur eine Referenz zurück. Aber gucke ich mir morgen mal an. Dir noch einen schönen Abend. MfG Meik
:
Bearbeitet durch User
Es hat mir doch keine Ruhe gelassen! Es läuft, Visual Studio meckert nicht mehr"Juhu!". Und wie immer im nachhinein auch ganz logisch. Für alle die es interessiert, siehe Anhang. MfG Meik
:
Bearbeitet durch User
Meik J. schrieb: > Und der Inhalt des this Zeigers ist doch die > Adresse des Objekt's. Und der Inhalt einer Referenz ist doch auch diese > Adresse ?! > Ich gebe ja nur eine Referenz zurück. Ja, aber es geht hier ja um den Typ. Eine Referenz muss immer auf ein Objekt zeigen, deshalb musst du den Pointer erst dereferenzieren.
Guten Morgen, ich merke gerade das ich mich anscheinend zu lange nicht mehr ausreichend mit C++ beschäftigt habe. Genau " return *this; " so steht es auch in meinen letzten Projekt Quellcode von 2017. Danke und euch eine erfolgreiche Woche. MfG Meik
1 | myList(); //Sonst weint Visual Studio |
Ist aber gar nicht unbedingt nötig. Nur wenn du es irgendwo aufrufst...
1 | myList(const myVector<T> & inst); //Kopierkonstruktor |
Das ist die gefährlichste Art von Kommentar - er ist nämlich falsch! Das ist kein Copy Constructor, sondern nur ein "ganz normaler". Da lieber gar keinen Kommentar...
Hallo Niklas, danke für deine Antwort. Ja, du hast Recht. myList(const myList<T> & inst); //Kopierkonstruktor wäre wesentlich besser. Etwas konstruktive Kritik von meiner Seite. Schreib doch vielleicht Antworten nicht so das sie sich ihrer Erläuterung schuldig bleiben. MfG Meik
:
Bearbeitet durch User
Was fehlt denn da an Erläuterung? Ich hätte gedacht, es sei Absicht, dass ein myVector übergeben werden soll und dass es absichtlich kein Copy-Constructor ist und nur der Kommentar falsch ist.
Richtig das Kommentar war falsch. Wäre doch ganz nett gewesen eine richtige Kopierkonstruktor Deklaration dem gegen über zustellen. Aber ich möchte jetzt keine Diskussion vom Zaun brechen. Deswegen Danke für deine Hilfe. Es ist aber auch nur ein schnell runtergetippter Beispiel Quellcode gewesen. Der leider mit Flüchtigkeitsfehlern gespickt war. MfG Meik
:
Bearbeitet durch User
Meik J. schrieb: > Wäre doch ganz nett gewesen eine richtige > Kopierkonstruktor Deklaration dem > gegen über zustellen. Naja, das kann man doch ruck-zuck googlen...
Niklas G. schrieb: > myList(); //Sonst weint Visual StudioIst aber gar nicht unbedingt nötig. > Nur wenn du es irgendwo aufrufst... > myList(const myVector<T> & inst); //Kopierkonstruktor > Das ist die gefährlichste Art von Kommentar - er ist nämlich falsch! Das > ist kein Copy Constructor, sondern nur ein "ganz normaler". Da lieber > gar keinen Kommentar... Naja, es ist ein Konvertierkonstruktor, das ist zwar was anderes als ein Kopierkonstruktor, aber geht in der gleichen Weise über einen "ganz normalen" Konstruktor noch etwas hinaus.
:
Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.