Deklarationsgewurschtel



  • Hallo, ich hänge hier gerade an einem echten Header/Include Problem. Und zwar habe ich hier zwischen 3 Klassen eine Art Kreisbeziehung und habe überhaupt keinen Plan mehr wie ich das auflösen könnte. 😞

    Im konkreten Fall hab ich hier 3 Klassen (Object, String und Exception) und dazu 6 Dateien (3 Header und 3 Source).

    Damit ich hier nicht zu viele Zeilen Code poste, beschreibe ich im folgenden nur einmal die Abhängigkeiten der Klassen untereinander.

    class Object {
      String toString();
    }
    
    class String extends Object {
      overides String toString();
      char getCharAt(int index) throws Exception;
    }
    
    class Exception extends Object {
      overides String toString();
    }
    

    Wie um alles in der Welt löse ich hier nur die Abhängigkeiten mit Predeklarationen und #include Anweisungen auf? 😕

    Wäre schön wenn ihr mir schreiben könntet in welcher Datei ich was hinzufügen muss, damit man diese Abhängigkeitsgeschichte sich auflöst.

    Noch schöner wäre ein Verfahren was immer funktioniert 😃



  • Hallo,

    Das sieht aber nicht wie C++ aus.



  • denk ma das is java, oder?



  • Das liegt daran, dass ich aus der Javawelt komme und gerade mich in C++ einarbeiten will. nd genau an dieser Stelle treffe ich auf Probleme, welche ich in Java nicht habe!

    Also ich brauche den Vorschlag für C++, auch wenn ich das eben in Java-like-Syntax angegeben habe.



  • Dein Google-Stichwort ist Vorwärtsdeklaration oder auch Forward Declaration 🙂



  • Mit Forwärtsdeklaration brauchst du auch ein Reorder der Klassen, da die Exceptionspezifikation afaik einen vollständigen Typ braucht, zB

    class Object ...
    class Exception ...
    class String ...
    

    Aber solche zirkulären Klassenbeziehungen sind in C++ idR eher ein Zeichen von schlechtem Design. Und alle Klassen von Object abzuleiten, ist in C++ auch keine wirklich sinnvolle Idee. Du solltest jedenfalls nicht versuchen, Java nachzubauen.


Anmelden zum Antworten