Objekt instanziieren



  • Hallo zusammen,

    folgendes: Ich habe eine Klasse namens USB in USB.h angeleget. Nun möchte ich in der Datei USB.cpp ein neues Objekt anlegen mit USB myUSB = new USB(); bekomme aber die Fehlermeldung Cannot convert USB* to USB Wenn ich nur schreibe: USB myUSB geht es. Woran liegt das 😕 Vielen Dank für Hilfe.

    Lg,
    blitzgeist



  • Weil du einmal ein dynamisches Objekt am Heap anlegst und auf diesen Speicherbereich nur einen Zeiger bekommst (demzufolge auch eine Zeigervariable anlegen musst) und beim zweiten Mal ein Objekt auf dem Stack instanzierst bei dem du die Variable direkt in den Händen hältst.

    Ich glaube du willst die zweite Variante, und wenn sie auch scho funktioniert ist das doppelt gut.

    MfG SideWinder



  • Wir sind hier nicht in java, "new" gibt einen zeiger, statt einer referenz zurück.

    MyClass a=new MyClass(); //fehler, das gibts in c++ nich!
    MyClass* pA=new MyClass(); //das ist in ordnung, musst auch wieder mit delete freigeben
    MyClass a=MyClass(); //so klappt es auch auf stack. wird automatisch gelöscht
    


  • vielen Dank für eure Antworten. Hat mir weitergeholfen 🙂



  • Der dritte Fall sieht wohl in den meisten Fällen eher so aus:

    MyClass my_obj (constructor_params);
    

    MfG SideWinder



  • jo 👍 habs halt einfach so in eine spalte geschrieben, damit mans besser vergleichen kann... war eigentlich unnötig, das stimmt. :p


Log in to reply