wider mal inlcude



  • Die Dateiendung hat damit doch nichts zu tun. Wie schon gesagt: Im Normalfall kommen die Deklarationen in den Header und die Definitionen in die cpp. Die entsprechenden Header bindest du ein wo du sie brauchst. Dann übersetzt der Compiler alle cpps und der Linker führt die daraus entstandenden Objektdateien anschließend zusammen. Was für einen Compiler verwendest du denn?



  • Lazarus schrieb:

    Warum findest du das nicht gut andere cpp Datein einzubinden. Was soll denn daran so unernsthaft sein???

    1.) Headerdateien enthalten üblicherwiese keine Implementierung, weil den
    Anwender deines Moduls/Lib deine Implementierung nichts "angeht".

    2.) Jeder Änderung deiner Implementierung dazu führt das ALLE abhängigen
    Dateien neu kompiliert werden müssen.

    3.) Weil auf diese Weise, aufgrund von leicht möglichen Verletzungen der
    One-Definition-Rule, generell Probleme beim "Arbeiten" bekommst.

    Mehr fällt mir auf Anhieb nicht ein. 😃



  • Braunstein schrieb:

    Die Dateiendung hat damit doch nichts zu tun. Wie schon gesagt: Im Normalfall kommen die Deklarationen in den Header und die Definitionen in die cpp. Die entsprechenden Header bindest du ein wo du sie brauchst. Dann übersetzt der Compiler alle cpps und der Linker führt die daraus entstandenden Objektdateien anschließend zusammen. Was für einen Compiler verwendest du denn?

    Na genau das hab ich doch oben im obersten Posting gemacht, das einzige was fehlt aber was ich gemacht habe ist in die datei mit den Definitonen der Memberfunktionen die .h Datei einzubinden. Sorry aber ich glaub das mit dem Posting unter deinem ist etwas an der frage vorbeigeredet. Ich will die Definition in eine cpp datei schreiben aber der Herr in dem ernsten Posting reagiert so entrüstet? Und ich fragae mich warum. Ich frage warum ich dei Definition nicht in die cpp Datei schreiben soll und er nennt mindestens ein Grund nämlich den ersten, warum . h Dateien keine Definitonen enthalten und die anderen beiden warum cpp keine Definitionen entahlten. Also ich glaube hier haben wir gerade wieder ein Szenario wo viele Köche den Brei verderben. Ich möchte schlichtweg wissen was sich denn empfiehlte wenn ich folgendes machen möchte: Das oben von mir ist ein Lösungsansatz. Mir erzählen gerade alle wie und warum denn nicht aber keiner wie.

    Ich möchte eine hauptDatei haben. Desweiteren möchte ich zu jeder Klassendeklaration eine in einer separaten Datei stehende Klassendefiniton haben. Und damit ich ich das benutzen kann in der Hauptdatei muss ich doch irgenwas einbinden.

    Danke und cu
    Ich verwende den neuen Dev Cpp Comiler



  • Du kannst die Definitionen schon in die cpp schreiben. Du solltest aber keine cpp-Dateien inkludieren.



  • Das hab ich schon probiert. Dann kan ich aber im Hauptprogramm kein Objekt instanzieren weil dort die Klassendefintion nicht bekannt ist. Ich mein was hab ich denn davon eine Definition in eine Datei zu schreiben die nicht eingebunden ist? Zu jeder instanzierbaren Klasse gehört doch die Deklaration und Definition. Wenn ich die Definition in eine .h datei schreibe und beide in die Hauptdatei einbinde funktionier das. Aber da kommt wider der Einwand von einem anderen Posting warum man das nicht macht. HILFE Moderator!!!!!!!!! Hast du nicht ne Ahnung in solchen Sachen????



  • Lazarus schrieb:

    Das hab ich schon probiert. Dann kan ich aber im Hauptprogramm kein Objekt instanzieren weil dort die Klassendefintion nicht bekannt ist

    Deswegen bindest du dort nur die Headerdatei mit allen benötigten Deklarationen
    ein. Deine Implementierung muss im Rahmen des Gesamtprojekt nur dem Linker bekannt
    sein.



  • Du solltes die Deklaration in den Header schreiben und die Implementierung in die cpp Datei. Die cpp Datei mit der Implementierung der Klasse inkludiert unter anderem die Header Datei (und die anderen Header, die benoetigt werden). Willst du die Klasse jetzt in anderen Dateien nutzen so inkldierst du die Header Datei.

    Gruss,
    DeSoVoDaMu



  • Das ist hier schon das eine oder andere Mal gesagt worden. Das Problem scheint mehr beim Linken zu liegen.



  • hey cool danke jetzt klappts. Habe nun die Headerdatei in beid Dateien eingebunden und die cpp mit den Definitionen gesondert compiliert. Nun klappts.

    Danke schön und cu



  • Braunstein schrieb:

    Das ist hier schon das eine oder andere Mal gesagt worden. Das Problem scheint mehr beim Linken zu liegen.

    Ja ja es ist schon einige Male einiges gesagt worden und teilweise je nach dem wer es gesagt hat auch komplett gegensätzlich zu dem was andere gesagt haben.

    Resultat: Verwirrungsfaktor 100%. Gut nun weiß ich wie es funktioniert und wer Recht und wer noch Wissenslücken hat und trotzdem Ratschläge erteilt. Ist nix schlimmes aber verwirrt so etwas.



  • Ein andere Thread auf dieser Seite ("Linker-Prob") hat wohl ein ähnliches Problem. Er hat dabei diesen Link gepostet http://www.user.tu-berlin.de/looprjbb/it/C_Kurs/funktion/Html/lektion_4/lektion_4.html
    Sieht eigentlich ganz übersichtlich aus.


Anmelden zum Antworten