Fehler?



  • wäre es möglich diese Unterhaltung mal über einen messager zu tätigen=`?



  • HeikoGrue schrieb:

    Die Lösung ist also zweiteilig:

    1. Binde die KFZ.cpp in dein Projekt mit ein.
    2. Entferne die geschweiften Klammern beim Konstruktor in KFZ.h

    Zu 1) Wieso ist diese nicht durch die #include "KFZ.h" eingebunden?

    Nein. Das ist ja nur der Header. #include macht nichts magisches. Es sorgt nicht automatisch dafür, dass kfz.cpp kompiliert wird. #include fügt nur den Text, der in der angegebenen Datei steht, an die Stelle der include-Direktive ein. Du musst schon noch CodeBlocks beibringen, dass es kfz.cpp neben main.cpp auch kompilieren soll. Das geht irgendwo über die Target-Einstellung. Du musst halt sagen, dass zu deinem Debug/Release-Target noch die kfz.cpp dazu gehört. Wenn du die in diesem Dialog nicht auswählen kannst, dann ist die Datei noch nicht Teil des Projekts und muss hinzugefügt werden. Wenn das richtig eingestellt ist, wird CodeBlocks 2mal den Compiler aufrufen, einmal mit main.cpp und einmal mit kfz.cpp. Daraus werden dann main.o und kfz.o (die Objektdateien) und die werden dann mit dem Linker gebunden (main.o+kfz.o -> deinprogramm.exe). So funktioniert "getrennte Übersetzung". Unbedingt auch in dem C++ Buch deines Vertrauens nachlesen, was eine "Übersetzungseinheit" ist und was die "one definition rule" ist. Wichtig. Unbedingt lesen. Überhaupt sind schlaue C++ Bucher extremst praktisch. Man kann sich viel Zeit und Ärger ersparen, wenn man "C++ richtig" lernt.



  • [Rewind] schrieb:

    HeikoGrue schrieb:

    Das schlimme ist eben ich bin noch kein Schritt weiter leider.

    Und ob du das bist. Ersetze den Konstruktor in der Klassendefinition durch deinen Konstruktor in KFZ.cpp (Zeilen 9-10) und schon hast du einen sauberen Code.

    Würde ich nicht machen. Für mich sind auch Initialisierungslisten schon Implementierungsdetails die in die cpp-Datei gehören. Grundsätzlich mache ich keine Implementierungen in der Headerdatei (Ausnahme Templates).

    HeikoGrue schrieb:

    ...und in dem Projektordner sind alle diese Dateien enthalten...

    Ich hoffe das du mit Projektordner nicht nur das Verzeichnis auf der Festplatte, sondern wirklich das Projekt meinst.

    HeikoGrue schrieb:

    @asc: das mit Inkludieren der cpp war ein Tipp von jemandem von uns.

    Dann war es ein verdammt schlechter Tipp. Nur weil jemand etwas schreibt, heißt das nicht, das es sinnvoll wäre.

    Wobei ich auch nicht verstehe warum Variablen unbedingt abgekürzt werden müssen (zumindest bei Tankgr frage ich mich zuerst einmal für was das gr steht, dann lieber Fassungsvermoegen). Und zudem warum man Parametern ein "n" vorwegstellt - was soll das bedeuten? Das sind aber nicht wirklich "Fehler"... Jeder soll mit dem Stil zurechtkommen, den er selbst wählt, oder den ein Projekt vorgibt.



  • Also ist der Code Fehlerfrei...

    Leider kann ich die Einstellung nicht finden indem ich die cpp hinzufüge.

    In Java macht die Vererbung ja noch sinn^^

    In dem Projekt ist die Datei auf jeden fall da ich nur die Projektdatei aufrufe und dann eben alle diese cpp und Header Datei auch im Programm habe.



  • In Code::Blocks im Menü Project gehst du auf Add Files ... und wählst alle .cpp-Dateien aus die du für dein Project/Programm brauchst.



  • die habe ich doch bereits in dem Projekt .....



  • Beim Hinzufügen zum Projekt fragt er dich auch, zu welchen Targets die gehören. Vielleicht hast du da vergessen, die Targets anzuklicken. Das kannst du aber auch noch nachholen. In C::B kann ein Projekt nämlich mehrere "Targets" enthalten.

    Jetzt bin ich erst mal ne Weile Stil. Mein Erklärungskontingent ist ausgeschöpft.



  • *Münze nachwerf*



  • Hallo wie bin leider immer noch nicht weiter.... er sagt mir immer KFZ sei keine klasse oder Namespace obwohl diese im Header vorhanden ist
    ???



  • Moin.
    Hast du mal versucht das ganze per GCC auf der Kommandozeile zu kompilieren?
    Dann siehst du wenigstens, ob es an deiem Code liegt, oder an einer Einstellung in deiner IDE.

    g++ -o $NAME main.cpp KFZ.cpp
    

Anmelden zum Antworten