Kleines Designproblem bei Vererbung...



  • Original erstellt von Mis2com:
    **
    Und bitte keine Aussagen wie:
    Dein ganzes Design mit den Headern ist Schwachsinn, das stimmt nicht**

    *lol* deine meinung wird sich beim zweiten compilieren ändern 😉
    wenn dan jede quellcodedatei (die main.h inkludiert) alle header mit inkludiert, die selbst auch wieder die main.h inkludieren, damit sie alle header sehen?

    in headern solltest du immer nur die header inkludieren, die du wirklich brauchst -

    //main.h - ich lass die ifndef dinger mal weg, dauert zu lange zu schreiben
    
    #include "derived.h"
    #include "base.h" /* Wenn du trotzdem du weißt, dass derived base inkludiert, das extra schreiben willst :rolling_eyes: */
    
    //base.h
    
    //nix
    
    //derived.h
    
    #include "base.h" /* Mehr brauchst du nicht */
    

    btw: bei den define sachen solltest du nicht mit dem underscore beginnen, weil ALLE Bezeichner, die mit underscore beginnen, für den compiler reserviert sind.
    irgendwann könnte sich das rächen



  • Da er in base.h die main.h inkludiert führt das auf die gleiche Ausgangssituation.

    Da ist ein Deadlock drin, ich denke gerade noch über eine geeignete Demo nach wie man das sieht.

    Was auf jeden Fall funktioniert: die Idee mit der main.h auf den Müll werfen (erhöht nur die Compilezeit des Projekts in furchtbare Größen), im Header immer nur das inkludieren was man braucht, in der cpp immer nur das inkludieren was man braucht. Fertig. Das ist die Lösung dafür.

    Apropos, irgendjemand wird Dir das noch sagen (da habe ich keine Zweifel 🙂 ), aber Du solltest keine eigenen Symbole anlegen, die mit einem _ beginnen. Also #define BASE_H statt #define _BASE_H



  • Nagut, ibnklduier ich nur das Nötigste, ändert leider nichts an meinem Problem. 😞

    EDIT:
    Das übertarge ich jetzt eben mal auf alles.
    Dann sag ich wie es dann aussieht.

    [ Dieser Beitrag wurde am 08.06.2003 um 13:21 Uhr von Mis2com editiert. ]



  • Original erstellt von Marc++us:
    blablabla...

    ähm, ja... und wie weit unterscheidet sich das von meinem tip? 🙄
    hast du dir mal nur die frage angeschaut? 😃



  • OK Leute ihr habt Recht, das war wirklich Gülle was ich da hatte, ich schreibe es jetzt um. 🙄
    Aber ob es danach klappt?

    Ein weiteres Problem ist ja, dass wenn ich die Header inkludiere, die ich brauche, ja auch Header sidn die ebenfalls andere Header inkludieren...
    Dafür sorgt dann die #findef... Konstruktion, dass nicht jeder alles inkludiert oder?

    Und wenn eine C++-Datei nun eine Header-Datei inkludiert (ihre zugehörige Headerdatei bei einer Klasse), die schon die nötige Datei inkludiert hat, die die C++-Datei auch benötigt?

    [ Dieser Beitrag wurde am 08.06.2003 um 13:34 Uhr von Mis2com editiert. ]



  • im normalfall schon



  • Original erstellt von <Tipper>:
    **ähm, ja... und wie weit unterscheidet sich das von meinem tip? 🙄
    **

    Darin, daß ich die Antwort offen hatte, getippt habe, und abgesendet nachdem Du geschrieben hast... so daß ich Deine Antwort nicht mehr lesen konnte.



  • 🙂
    kommt nur etwas seltsam, alles nochmal zu sagen 😃



  • Das ist bei mir ziemlich komplex, manche Dateien inkludieren 5 osder 6 andere Header, deswegen hatte ich gedacht es wäre besser, das mit einer Header zu machen. 😕
    Naja, ich schreibe noch um, nurnoch 256 fehler 🙂



  • Sauber, nachdem ich den Code nach euren Ratschlägen bearbeitet hatte, funktionierte es 🙂
    Super, dann kann ich ja weitermachen. ^^

    MfG MAV


Anmelden zum Antworten