Οbjektorientierung



  • Eine frage:
    wenn ich beispielsweise 1 Objekt der klasse CKLASSE die als variable eine Zahl speichert und eine Methode besitzt um diese zu ändern besitze und außerdem 2 Objekte a und b von der Klasse ab erstelle die als variable das Objekt c besitzen. Wenn ich dann in a die Zahl in c aendere, dann ändert sich doch nicht c in b oder?
    Was muss ich machen damit das passiert? Danke für eine Antwort
    Niko



  • Wenn ich dich richtig verstanden habe, suchst du sowas wie geteilte Besitzverhältnisse. Dafür wäre deine Beschreibung aber verdammt kompliziert.

    Ansonsten: Kannst du das nochmals deutlicher formulieren? Was ist die Klasse ab ? Was ist c ? Am besten illustrierst du dein Anliegen an einem kleinen Stück Code.



  • Hatte es leider eilig, tut mir leid:

    Also es gibt eine Klasse KLASSEC und eine Klasse KLASSEAB:

    class KLASSEC
    {
          private:
    
              int zahl;
    
          public:
    
               KLASSEC();
               void setZahl(int z);
               int getZahl();
    
    };
    
    void KLASSEC::setZahl(int z)
    {
          zahl = z;
    }
    
    int KLASSEC::getZahl()
    {
          return zahl;
    }
    
    KLASSEC::KLASSEC()
    {
          zahl = 0;
    }
    
    class KLASSEAB
    {
          private:
    
              KLASSEC Objekt;
    
          public:
    
               KLASSEAB(KLASSEC nObjekt);
               void setZahl(int z);
               void getZahl();
    
    };
    
    void KLASSEAB::setZahl(int z)
    {
          Objekt.setZahl(z);
    }
    
    void KLASSEAB::getZahl()
    {
          cout << Objekt.getZahl(z);
    }
    
    KLASSEC::KLASSEC()
    {
          Objekt = nObjekt;
    }
    

    so in main erzeug ich 1 Objekt vom Typ KLASSEC und 2 Objekte vom Typ KLASSEAB die als Objekt das vorhin erzeugt objekt bekommen:

    int main(void)
    {
           KLASSEC c;
           KLASSEAB a (c); //wie übergibt man noch mal Objekte an den konstruktor??
           KLASSEAB b (c);
    
           a.setZahl(2);
           b.getZahl();
    
           return 0;
    }
    

    So was kommt jetzt raus?
    0 oder?
    wie krieg ich da 2 raus?



  • Das bekommst du mit Hilfe von Referenzen.

    Hier deine Klasse so modifiziert das sie eine Referenz verwendet:

    class KLASSEAB
    {
          private:
    
              KLASSEC & Objekt;
    
          public:
    
               KLASSEAB(KLASSEC & nObjekt);
               void setZahl(int z);
               void getZahl();
    
    };
    
    void KLASSEAB::setZahl(int z)
    {
          Objekt.setZahl(z);
    }
    
    void KLASSEAB::getZahl()
    {
          cout << Objekt.getZahl(z);
    }
    
    KLASSEAB::KLASSEAB( KLASSEC & nObject )
    : Objekt( nObjekt )
    {
    }
    

    BR



  • Hatte ich fast vergessen:
    Danke vielmals - und ein frohes Fest


Anmelden zum Antworten