Übergabe von Zeigern an Membervariablen
-
Hallo,
ich bin blutiger Anfänger und habe ein Problem mit der Übergabe von Zeigern an Membervariablen von Klassen, auf deren Instanzen ich wiederum nur einen Zeiger habe. Das Problem besteht darin, dass ich in einer Klasse namens "Behälter" einen Zeiger auf ein Objekt vom Typ "Objekt" ablegen möchte. Die Behälterklasse schaut dabei so aus:
class Behälter { public: Objekt* objekt; }Den Zeiger auf das Objekt, das ich in diesem Behälter ablegen möchte, erhalte ich zurück von einer Funktion, hier getObjekt(). Nun habe ich einen Zeiger auf eine Instanz von Behälter und möchte in deren Membervariable "objekt" den Rückgabewert meiner Funktion ablegen, also den Zeiger auf ein Objekt:
Behälter* a; a->objekt = getObjekt();Bei dieser Zuweisung erhalte ich jedoch einen Segmentation Fault, kann mir aber nicht wirklich erklären, warum. Weiß vielleicht von euch jemand Rat? Wäre über jeden Hinweis sehr dankbar...
-
Du hast dir zwar einen Zeiger angelegt, aber der zeigt noch auf "nichts" (genauer - er zeigt irgendwo in deinen RAM). Bevor du sinnvoll mit dem Imhalt von b arbeiten mußt, mußt du ihn erstmal auf ein existierendes Objekt zeigen lassen, z.B. mit "b=getBox();" (um dir analog zum getObjekt() einen Behälter zu besorgen) oder "b=new Behaelter;" (legt einen neuen Behälter an - vergiss nicht die Fregabe mit "delete b;").
PS: Das compiliert wirklich mit den Umlauten im Klassennamen?
-
Vielen Dank für die schnelle Hilfe, CStoll! Es funktioniert! Ich hab vor einiger Zeit mal an "new" gedacht, aber hab den Gedanken dann irgendwie wieder fallen lassen. Jetzt hab ich es aber zum Laufen bekommen.
Das compiliert wirklich mit den Umlauten im Klassennamen?
Mein eigentlicher Code enthält natürlich keine Umlaute, ich hab nur versucht, andere Namen zu verwenden, weil der Kontext keine Rolle spielt und womöglich nur verwirrend ist...