Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. German
  4. Verständnis Fragen zu Destructor anhand einen Beispiel
Forum Updated to NodeBB v4.3 + New Features

Verständnis Fragen zu Destructor anhand einen Beispiel

Scheduled Pinned Locked Moved Solved German
3 Posts 2 Posters 958 Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • G Offline
    G Offline
    Galilio
    wrote on last edited by
    #1

    Hallo zusammen,

    ich bin dabei dieses Beispiel " https://doc.qt.io/qt-5.10/qtwidgets-widgets-calculator-example.html"einzuarbeiten.

    Meine Frage bezieht sich genau auf die folgende class "https://doc.qt.io/qt-5.10/qtwidgets-widgets-calculator-calculator-h.html"

    Bei diesem class wurde einen Zeiger Array von Typ Butto deklariert:

    Button *digitButtons[NumDigitButtons];
    

    was mir nicht ganz klar warum wude kein destructor definiert um dieser Zeiger Array zu löschen?
    Mir ist schon klar, dass es keinen directen Object "digitButtons" mit (

    digitButtons = new Button(...) ) 
    

    erzeugt wurde. Es wurde dann die Erzeugung des Objects in eine andere Funktion gekappselt.

    Könnte es bitte jemende erklären warum?
    Danke

    J.HilkJ 1 Reply Last reply
    0
    • G Galilio

      Hallo zusammen,

      ich bin dabei dieses Beispiel " https://doc.qt.io/qt-5.10/qtwidgets-widgets-calculator-example.html"einzuarbeiten.

      Meine Frage bezieht sich genau auf die folgende class "https://doc.qt.io/qt-5.10/qtwidgets-widgets-calculator-calculator-h.html"

      Bei diesem class wurde einen Zeiger Array von Typ Butto deklariert:

      Button *digitButtons[NumDigitButtons];
      

      was mir nicht ganz klar warum wude kein destructor definiert um dieser Zeiger Array zu löschen?
      Mir ist schon klar, dass es keinen directen Object "digitButtons" mit (

      digitButtons = new Button(...) ) 
      

      erzeugt wurde. Es wurde dann die Erzeugung des Objects in eine andere Funktion gekappselt.

      Könnte es bitte jemende erklären warum?
      Danke

      J.HilkJ Offline
      J.HilkJ Offline
      J.Hilk
      Moderators
      wrote on last edited by
      #2

      @Galilio Wenn ich das richtig sehe, ist Button *digitButtons[NumDigitButtons]; kein Zeiger auf ein Array sondern ein Array von Zeigern, deswegen werden die einzelnen Zellen auch mit nem Zeigen von Button gefüllt:

      Button *createButton(const QString &text, const char *member);//gibt nen pointer wieder
      
      
      digitButtons[i] = createButton(QString::number(i), SLOT(digitClicked()));//Speichert den Pointer im Array
      

      mit

      mainLayout->addWidget(digitButtons[i], row, column);
      

      bekommen die einzelnen Buttons dann nen parent zugewiesen, das Layout macht das automatisch, das heißt also dass die Buttons mit der Vernichtung des Layouts auch zerstört werden.


      Be aware of the Qt Code of Conduct, when posting : https://forum.qt.io/topic/113070/qt-code-of-conduct


      Q: What's that?
      A: It's blue light.
      Q: What does it do?
      A: It turns blue.

      1 Reply Last reply
      0
      • G Offline
        G Offline
        Galilio
        wrote on last edited by
        #3

        @J-Hilk
        Super erklärt

        Danke

        1 Reply Last reply
        0

        • Login

        • Login or register to search.
        • First post
          Last post
        0
        • Categories
        • Recent
        • Tags
        • Popular
        • Users
        • Groups
        • Search
        • Get Qt Extensions
        • Unsolved