Was bedeutet der Fehler (C++)?
Hallo,
ich programmiere ein Programm in C++. Und da ist folgende Fehler Meldung aufgetaucht:
C:\Users\TheCpp\OneDrive\OpenGL\src\element\element.cpp: In member function 'void element2D::createShader(std::__cxx11::string, std::__cxx11::string)':
C:\Users\TheCpp\OneDrive\OpenGL\src\element\element.cpp:7:82: error: taking address of temporary [-fpermissive]
this->MyShader = &Shader(vertexShaderPath.c_str(), fragmentShaderPath.c_str());
^
Leider kann ich den Fehler nicht beheben da ich nicht was die beutetet. Könntet ihr mir die Fehlermeldung erklären?
1 Antwort
Vom Beitragsersteller als hilfreich ausgezeichnet
Du erstellst innerhalb einer Funktion ein Objekt auf dem Stack und speicherst die Adresse dieses Objektes an einer Stelle, von der aus möglicherweise außerhalb dieses Funktionsaufrufes ber diese Adresse auf das Objekt zugegriffen werden könnte.
Allerdings existiert das Objekt nach dem Funktionsaufruf nicht mehr, so dass deine Adresse auf eine Speicherstelle verweist, die evtl. gar nicht mehr deinem Programm zugewiesen ist.
Klassischer Fall von undefiniertem Verhalten.