Problem mit initialisierung von lokaler Variable



  • Wie ich gerade merke hat es doch nicht funktioniert , was es ja garnicht kann.
    Ich habe nur vergessen die /**/ in Device.h zu entfernen.

    Nunja ich werde mal weiter probieren und wenn nicht , oder bis da hin werde ich einfach

    Device* device = 0;
    

    und den error test deaktivieren



  • Was zur Hölle veranstaltest du da?

    Dein Compiler beschwert sich berechtigterweise, dass du eine uninitialisierte Variable benutzt, und du baust Hacks um die Warnung zu unterdrücken.



  • 1.Ich hab nun einfach dein

    Device
    
    virtual CCEDevice::Device* getDevice() = 0;
    

    hinzugefüg sodass ich nun

    Device* lala = lala->getDevice();
    

    machen kann wobei das selbe wie davor rauskommt.
    Also bin ich wieder am Anfang :|

    und du baust Hacks um die Warnung zu unterdrücken.

    meinst du brauchst oder baust ? und erläutere das bitte näher



  • 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?



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



  • 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