Objekt an Funktion übergeben



  • Hallo,

    wie kann ich einer Funktion ein Objekt übergeben und dies dann dort einsetzen?

    Beispiel:

    class CButton;
    CButton m_cButton1;  // erstes Objekt
    CButton m_cButton2;  // zweites Objekt
    .
    .
    .
    CButton m_cButton100;
    
    m_cButton1.SetButton(hHandle); // Diese Anweisung möchte ich in eine Funktion auslagern, damit ich
                                   // verschiedene Objekte dort benutzen kann
    
    // Ich stelle mir das so vor:
    void Funktion(CButton Objekt)
    {
       Objekt.SetButton(hHandle);
    }
    // Geht aber syntaktisch nicht, wie kann ich das also realisieren?
    

    Danke für eure Hilfe und sorry, bin Anfänger!
    Krommi



  • So, wie du das realisiert hast, übergibst du eine Kopie des jeweiligen CButton-Objektes - d.h. die Objekte des Hauptprogramms werden davon nicht beeinflusst. Wenn du den übergebenen Button ändern willst, mußt du ihn als Referenz übergeben:

    class CButton
    {...};
    
    void setValue(CButton& objekt)
    { objekt.SetButton(hHandle); }
    
    int main()
    {
      CButton m_button1;
      setValue(m_button1);
      ...
    }
    


  • Ich würde einfach eine Referenz auf das Objekt übergeben.

    void Funktion (CButton& Objekt)
    {
         Objekt.machwas();
    //...
    }
    

    Die Funktion rufst du dann einfach so auf:

    Funktion (m_CButton1);
    

    Geht natürlich auch mit Pointern:

    void Funktion (CButton* Objekt)
    {
          Objekt->machwas();        // Pfeiloperator!
          //...
    }
    

    Beim Aufruf musst du dann natürlich entsprechend die Adresse übergeben:

    Funktion(&m_CButton1);
    

    So, ich hoffe, das hilft dir weiter.

    Edit: Hm, schneller...


Anmelden zum Antworten