Announcement

Collapse
No announcement yet.

Deklarations Problem von 2 Klassen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Deklarations Problem von 2 Klassen

    Folgende Situation:
    Man hat 2 zwei Klassen X und Y, beide klassen beherbergen Funktionen
    die als parameter die jeweilige anderer Klasse benötigen bzw einen Klassenmember
    des anderen types besitzen.

    Wie löst man nun das Problem nun das der Kompiler dies wiederstandslos
    annimmt?
    Mit Guards, natürlich...zumindestens dachte ich das bis vorkurzem.

    Hier mal exemplarisch 2 klassen um das Problem zu verdeutlichen!
    Code:
    #ifndef X_H
    #define X_H
    
    #include "y.h"
    
    namespace abc
    {
        class x
        {
           public:
    
            //Funktion foo benötigt als Parameter ein object des typs y 
            void foo(y* bla);
        };
    }
    
    #endif
    Code:
    #ifndef Y_H
    #define Y_H
    
    #include "x.h"
    
    namespace abc
    {
        class Y
        {
           private:
                X                                              m_Var;
           public:
            //Funktion supderfoo benötigt als Parameter ein object des typs x* 
            void superfoo(x* bla);
        };
    }
    
    #endif
    würd man den code so dem gcc übergeben und versuchen beide klassen zu benutzen spuckt der jedoch Fehlermeldungen aus wie: Fehler:
    * X wurde nicht deklariert.

    Habe bisher keine wirkliche lösung dafür, hab es mit vorwärts deklaration versucht, hat aber auch nichts gebracht. Habt einer hier vielleicht die Lösung?

    Ich glaube nämlich ich seh den Wald vor lauter Bäumen nicht.
    Zuletzt editiert von ExOfDe; 17.07.2012, 16:57. Reason: kleine korrektur meiner Aussage

  • #2
    http://www.marquardtnet.info/cecke/q...quicky_22.html
    Christian

    Comment


    • #3
      wie ich schon geschrieben habe vorwärts deklaration funktioniert nicht dann bekomme ich nur folgende Fehlermeldung:
      Fehler: Feld »m_Var« hat unvollständigen Typen

      Comment


      • #4
        Schon mal ein kleines x genutzt?
        Christian

        Comment


        • #5
          die Namen in dem >>Beispiel<< sind irrelevant waren mehr dazu überhaupt ein Bild vom Code zu bilden, auf eine ganz ganz ganz allgemeine ebene!! Der Richtige Code arbeitet mit anderen Namen die Per Autovervollständigung von der IDE eingefügt worden sind teilweise wo ich also gar kein schreibfehler rein machen konnte!

          Das war ja auch das erste was ich auch gedacht habe irgendetwas falsch geschrieben, ist nur leider nicht der Fall.

          Comment


          • #6
            Sorry nimm alles zurück ist wirklich das typische den wald vor lauter bäumen nicht sehen. Du hattest recht vorwärtsdeklaration ist schon richtig, hatte mich selber gewundert warum das nicht ging, hab vergessen das ich einen zeiger hätte benutzen müssen habs bis grad eben selber nicht gesehen

            Comment

            Working...
            X