warning stört... (falsch gepostet in C)
-
Hallo,
wie kriege ich diese Warnung weg?
main.cpp:1089: warning class might be used uninitializedin this function
In der Funktion schreibe ich:
class Something *newObject;
Danke.
-
Initialisiere das Objekt, bevor du es benutzt.
-
@shuriko
Bitte keine Crosspostings. Warte das nächste Mal einfach, bis deine Frage von einem Moderator verschoben wurde.Deine Frage steht so nun nämlich bereits dreimal im Forum und das muss nicht sein:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-161893.html
http://www.c-plusplus.net/forum/viewtopic-var-t-is-161889.html
-
HumeSikkins schrieb:
Deine Frage steht so nun nämlich bereits dreimal im Forum und das muss nicht sein:
Ok.
-
Konstruktör schrieb:
Initialisiere das Objekt, bevor du es benutzt.
So:
Something* newObject = new Something;
wie es mir in einer anderen Antwort empfohlen wurde komme ich nicht klar.
-
Hallo
komme ich nicht klar.
Und was genau ist dir unklar? Das Prinzip?
Ohne eine genaue Problembeschriebung (Fehlermeldungen des Compilers!) kann ich dazu nur sagen : arbeite ein ordentliches Tutorial zum Thema C++ Grundlagen durch.bis bald
akari
-
*grml* Es geht doch sicher auch etwas genauer, oder?
Also nochmal ausführlicher: Du hast dort einen Pointer. Der muß auf ein existierendes Objekt zeigen, bevor du irgendwas mit ihm machen kannst. Am einfachsten ist es, dafür die Adresse eines existierenden Objets zu nehmen:
Something theObject; ... Something* newObject = &theObject;//verweist jetzt auf das globale Objekt
Alternativ kannst du auch ein neues Objekt auf dem Heap anlegen und an den Pointer übergeben:
Something* newObject = new Something; //oder, wenn die Klasse Konstruktoren hat: Something* newObject = new Something(/*hier die Parameter eintragen*/)
Als letzt Möglichkeit kannst du den Pointer auch auf NULL setzen, um ihn später zu initialisieren (aber dann solltest du vor jeder Verwendung selber überprüfen, ob er schon gültig ist).
-
CStoll schrieb:
Also nochmal ausführlicher
Super!
In der Klasse hatte ich Konstruktor/Destruktor. Das war das Problem (+ etwas an Wissen fehlt)
Dazu möchte ich noch fragen, ob diese Objekte zum Schluß "deleted" sein müssen oder kann man sich aufs Programm-Schließen verlassen
-
Alles was per new angelegt wird, muss per delete freigegeben werden.
Sprich:
Something* newObject = new Something;
Du musst "deleten"
Something theObject;
Du darfst nicht "deleten"