Problem mit Header!



  • Nexus schrieb:

    Jetzt ist wenigstens schon mal ein std::string const& im Linkerfehler.

    Aber Person.cpp wurde ja gar nicht kompiliert? Gehört die Datei zum Projekt? Veränder dort mal was (irgendwo ein Leerzeichen schreiben reicht), dann wird sie neu kompiliert.

    Ok,habe ich gemacht paar Leerzeichen eingefügt und die Initialisierungsliste bischen verschoben.Aber immer noch der gleiche Fehler.Und ich habe eben überprüft die Person.cpp liegt im gliechen Ordner wie Person.h und Header.cpp!



  • Aber gehört sie auch zum Projekt? Es gibt so ein Menü "Projektmappen-Explorer" (üblicherweise links in der IDE). Dort siehst du die Dateien, die zum Projekt gehören.



  • Nexus schrieb:

    Aber gehört sie auch zum Projekt? Es gibt so ein Menü "Projektmappen-Explorer" (üblicherweise links in der IDE). Dort siehst du die Dateien, die zum Projekt gehören.

    Ja,da steht nix von beiden.Also weder person.cpp noch Person.h!



  • Iljaronaldo schrieb:

    Aber immer noch der gleiche Fehler.Und ich habe eben überprüft die Person.cpp liegt im gliechen Ordner wie Person.h und Header.cpp!

    Und sind die Dateien im Ordner IDENTISCH mit denen im Editor? (Nicht das hier zwei Pfade durcheinander geraten sind)...

    Davon abgesehen: Unabhängig davon welchen Einrückstil etc. du verwendest, würde ich dennoch zumindestens die beiden Konstruktoren in deiner cpp-Datei mit einer Leerzeile voneinander trennen (Wenn du längere Sourcedateien hast, ist sonst das Lesen etwas schwer...).

    Und deinen Einrückstil von der Initialisierungsliste will ich zumindestens hinterfragen: Was ist wenn du mehrere Werte in der Initialisierungsliste hast, willst du das dann Optisch wirklich so lassen?

    cu André



  • Iljaronaldo schrieb:

    Ja,da steht nix von beiden.Also weder person.cpp noch Person.h!

    Dann füge die mal hinzu (glaube über Rechte Maustaste, hinzufügen)...



  • [quote="asc"]

    Iljaronaldo schrieb:

    Und deinen Einrückstil von der Initialisierungsliste will ich zumindestens hinterfragen: Was ist wenn du mehrere Werte in der Initialisierungsliste hast, willst du das dann Optisch wirklich so lassen?

    cu André

    Ja,wie gesagt das mit Ordner habe ich schon geprüft gehabt also alle Dateien die bei dem Projekt Explorer stehen sind ort und noch dazu die person.h und person.cpp

    Das mit Initialisierungslisten würde ich persönlich so machen:

    Person(.......):
                   name(n),
                   vorname(v)
    {}
    


  • asc schrieb:

    Iljaronaldo schrieb:

    Ja,da steht nix von beiden.Also weder person.cpp noch Person.h!

    Dann füge die mal hinzu (glaube über Rechte Maustaste, hinzufügen)...

    ja,das habe ich schon probiert über rechte-maustaste gehts nciht benso wie das mit dem ziehen aber ich suche grad noch weiter.
    Ok,ich habe es gesachafft nun kommen noch mehr Fehler:

    ------ Erstellen gestartet: Projekt: Header, Konfiguration: Debug Win32 ------
    Kompilieren...
    Header.cpp
    Person.cpp
    c:\dokumente und einstellungen\$ilja$\eigene dateien\eigene musik\c++ codes\header\header\person.cpp(1) : warning C4627: "#include "Person.h"": Wird bei der Suche nach Verwendung des vorkompilierten Headers übersprungen.
            "stdafx.h" Direktive hinzufügen oder vorkompilierten Header erneut erstellen
    c:\dokumente und einstellungen\$ilja$\eigene dateien\eigene musik\c++ codes\header\header\person.cpp(4) : error C2871: 'std': Es ist kein Namespace mit diesem Namen vorhanden
    c:\dokumente und einstellungen\$ilja$\eigene dateien\eigene musik\c++ codes\header\header\person.cpp(6) : error C2653: 'Person': Keine Klasse oder Namespace
    c:\dokumente und einstellungen\$ilja$\eigene dateien\eigene musik\c++ codes\header\header\person.cpp(6) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
    c:\dokumente und einstellungen\$ilja$\eigene dateien\eigene musik\c++ codes\header\header\person.cpp(8) : error C2550: 'Person': Initialisierungslisten für Konstruktoren dürfen nur in Konstruktordefinition stehen
    c:\dokumente und einstellungen\$ilja$\eigene dateien\eigene musik\c++ codes\header\header\person.cpp(8) : warning C4508: 'Person': Funktion sollte einen Wert zurückgeben; Ergebnistyp 'void' angenommen
    c:\dokumente und einstellungen\$ilja$\eigene dateien\eigene musik\c++ codes\header\header\person.cpp(9) : error C2653: 'Person': Keine Klasse oder Namespace
    c:\dokumente und einstellungen\$ilja$\eigene dateien\eigene musik\c++ codes\header\header\person.cpp(9) : error C2065: 'string': nichtdeklarierter Bezeichner
    c:\dokumente und einstellungen\$ilja$\eigene dateien\eigene musik\c++ codes\header\header\person.cpp(9) : error C2143: Syntaxfehler: Es fehlt ')' vor 'const'
    c:\dokumente und einstellungen\$ilja$\eigene dateien\eigene musik\c++ codes\header\header\person.cpp(9) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
    c:\dokumente und einstellungen\$ilja$\eigene dateien\eigene musik\c++ codes\header\header\person.cpp(9) : error C2365: "Person": Erneute Definition; vorherige Definition war "Funktion".
            c:\dokumente und einstellungen\$ilja$\eigene dateien\eigene musik\c++ codes\header\header\person.cpp(6): Siehe Deklaration von 'Person'
    c:\dokumente und einstellungen\$ilja$\eigene dateien\eigene musik\c++ codes\header\header\person.cpp(9) : error C2550: 'void __cdecl `dynamic initializer for 'Person''(void)': Initialisierungslisten für Konstruktoren dürfen nur in Konstruktordefinition stehen
    c:\dokumente und einstellungen\$ilja$\eigene dateien\eigene musik\c++ codes\header\header\person.cpp(9) : error C2059: Syntaxfehler: ')'
    c:\dokumente und einstellungen\$ilja$\eigene dateien\eigene musik\c++ codes\header\header\person.cpp(10) : error C2065: 'name': nichtdeklarierter Bezeichner
    c:\dokumente und einstellungen\$ilja$\eigene dateien\eigene musik\c++ codes\header\header\person.cpp(11) : error C2448: 'name': Funktionsstil-Initialisierung scheint eine Funktionsdefinition zu sein
    Code wird generiert...
    Das Buildprotokoll wurde unter "file://c:\Dokumente und Einstellungen\$Ilja$\Eigene Dateien\Eigene Musik\C++ Codes\Header\Header\Debug\BuildLog.htm" gespeichert.
    Header - 13 Fehler, 2 Warnung(en)
    ========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========
    

    Ok,ich habe den fehler undzwar habe ich unter Person.cpp erstmal #inlcude "Person.h" und dann erst #include <stdafx.h> gemacht und wdas musste genau andersrum sein.



  • Iljaronaldo schrieb:

    Das mit Initialisierungslisten würde ich persönlich so machen:

    Viel Spaß wenn deine Parameterliste mal länger wird. Du scrollst gerne horizontal, oder? 😉

    cu André



  • Iljaronaldo schrieb:

    ja,das habe ich schon probiert über rechte-maustaste gehts nciht benso wie das mit dem ziehen aber ich suche grad noch weiter.
    Ok,ich habe es gesachafft nun kommen noch mehr Fehler:

    Logisch. Auf die stdafx.h & Ähnliches sind wir aber schon früher eingegangen.



  • asc schrieb:

    Iljaronaldo schrieb:

    Das mit Initialisierungslisten würde ich persönlich so machen:

    Viel Spaß wenn deine Parameterliste mal länger wird. Du scrollst gerne horizontal, oder? 😉

    cu André

    ich könnte das auch so machen

    Person():name(n),v..(..),sgs(...),
             name(..),.................
    


  • Wieso frags du eigentlich?Jeder hat doch eigenen Stil und macht so wie es ihm gefällt.



  • Iljaronaldo schrieb:

    Wieso frags du eigentlich?Jeder hat doch eigenen Stil und macht so wie es ihm gefällt.

    Ich habe es nur aus Erfahrungswerten heraus gefragt. Wenn du mehrere Konstruktoren untereinander hast, musst du immer erst Suchen wo die Initialisierungsliste ist (Auch für das Schreiben von Konstruktor/Kopiekonstruktor eignet sich eine einheitliche Formatierung). Zudem ist der Abgleich bei neuen Membervariablen leichter, wenn du die Initialisierungslisten leicht überschauen kannst.

    Und falls du Ausnahmsweise den Source ausdrucken willst... spätestens dann verstehst du mich 😉 [Das wird zwar nur selten vorkommen, wenn überhaupt, ist aber einer von vielen Gründen weswegen ich lange Zeilen vermeide].

    cu André


Anmelden zum Antworten