Problem mit initialisierung von lokaler Variable



  • Initialisiere einfach dein Device und gut !

    Ob es jetzt ein

    Device* dev = new Device;
    

    oder ein

    Device* dev = 0;
    

    oder am Besten

    Device* dev = CreateDevice(); // CreateDevice ist eine Funktion, die dein Device erzeugt und initialisiert.
    

    ist schnuppe (für den Compiler natürlich nur), danach ist die Warnung weg.



  • Wie schon erwähnt: Wenns nicht nötig ist dein Objekt mit new zu erzeugen, erzeuge es als automatische Variable!



  • manni66 schrieb:

    Vielleicht solltest du mal ein einführendes C++ Buch lesen.

    👍

    Dir scheint grundlegendstes Wissen zu fehlen, so kommst du nicht weit.



  • Device* lala = lala->getDevice();

    Herrje, ist es denn so schwer zu verstehen? Um lala zu inititialisieren willst du lala dereferenzieren (ding ding ding ding *alarm* *alarm* ding ding ding) und getDevice aufrufen. Klingeln da nicht alle Alarmglocken bei dir?

    Nein sorry.Ich weiß nicht genau was du damit meinst "dereferenzieren"

    Der rest mit

    dev = 0 , new Device ... geht ja auch alles aber was ich gerne wissen würde , wenn ich den Device durch eine funktion so wie getDevice(),createDevice()... was auch immer wie eben diese funktion getDevice aussieht

    Hier z.B.

    Device* dev = CreateDevice();
    

    Was enthält nun diese funktion ?



  • Was enthält nun diese funktion ?

    Du wirst doch irgendeine Schnittstelle nutzen, die dir dein Device erzeugt? Benutz die.

    Oder ist Device etwa von dir geschrieben?



  • Device hab ich selbst geschrieben , deswegen auch die frage



  • dann musst du wissen, wie du dein Device erzeugen kannst.

    Lern bitte erstmal C++.



  • Dann ist dein ganzes Vorhaben schwachsinnig. 😉

    Erstell dev einfach auf dem Stack, oder bei dynamischer Lebenszeit auf dem Heap.



  • Ja eigentlich passt es mit

    Device dev = new Device;
    


  • 7xCore schrieb:

    Ja eigentlich passt es mit

    Device dev = new Device;
    

    Glaub ich weniger. Der Vorschlag mit erstmal C++ lernen scheint mir gar nicht so daneben...



  • Wieso denn ?

    Device dev = new Device;
    

    ist doch eine Möglichkeit die funktioniert , acuh wenn das nicht immer das entscheidene ist.

    Kennst du eine besser Möglichkeit ? 🙂



  • 7xCore schrieb:

    Wieso denn ?

    Device dev = new Device;
    

    ist doch eine Möglichkeit die funktioniert , acuh wenn das nicht immer das entscheidene ist.

    Kennst du eine besser Möglichkeit ? 🙂

    Device dev;
    


  • ...
    Ja klar 😋
    aber mit einem pointer



  • Wozu brauchst du nen Zeiger? 🙄

    Wenns unbedingt ein Zeiger sein muss, dann machs halt so:

    Device dev;
    Device *devptr = &dev;
    

    Wobei ich denke, dass das Problem bei dir wo ganz anders sitzt...wenn du selbst Klassen erstellst und fragst wie man die nun initialisiert, dann läuft irgendwas falsch. Beschäftige dich erstmal mit einfacheren Sachen, bis du das Grundkonzept von Klassen, Zeigern, Stack, Heap usw. verstanden hast.


Anmelden zum Antworten