Forum: PC-Programmierung warum kille ich diese Variable?


von chris (Gast)


Lesenswert?

hallo!

folgendes problem:

ich habe eine Klasse mit 2 Membervariablen und einer Methode.
1
class test
2
{
3
 public:
4
 string foo;
5
 string foo2;
6
7
 void setup();
8
};
9
10
void test::setup()
11
{
12
 this->foo2 = this->foo;
13
}

sobald ich die Methode "setup" ausführe, ist die Variable "foo" leer.
Wie kann ich foo2 den Wert von foo zuweisen, ohne foo zu zerstören?

besten dank für jeden Tipp

von Severino R. (severino)


Lesenswert?

Wie wär's mit:

foo2 = foo;

Hat foo denn vorher überhaupt einen Wert? Wo und wie weist Du den zu?

Severino

von Simon K. (simon) Benutzerseite


Lesenswert?

Wie zerstört man denn eine Variable?!

Kenne höchstens die Variante, dass man eine Variable, die auf dem Heap 
existiert (per malloc oder new angelegt) wieder gelöscht wird (free, 
delete). Aber zerstören? ;)

Ne, ohne Mist: In deinem Code ist kein Fehler. Es ist nur sinnlos eine 
Variable mit einer anderen nicht-initialisierten Variable zu 
initialisieren.

PS: den this-> Pointer kannst du weglassen.

von Mike (Gast)


Lesenswert?

zeigen die String Variablen nach der definition nicht auf den 
nullpointer?
es muss vorher eine initialisierung erfolgen, anschließend kann man den 
wert von foo an foo2 zuweisen...

von Karl H. (kbuchegg)


Lesenswert?

Mike wrote:
> zeigen die String Variablen nach der definition nicht auf den
> nullpointer?

Nein.
Das ist C++ und nicht C#

In dem Moment in dem er ein test Objekt anlegt, legt er auch
die im Objekt enthaltenen string Objekte an und ...

> es muss vorher eine initialisierung erfolgen, anschließend kann man den
> wert von foo an foo2 zuweisen...

... selbst wenn keine explizite Initialisierung dieser string
Objekte erfolgt, haben sie dennoch einen Wert, nämlich einen
leeren String.

Egal wie er sich anstellt, wenn das test Objekt erzeugt wurde
sind auch die string Objekte in einem gültigen Zustand (sind
also initialisiert).


von Chris (Gast)


Lesenswert?

Danke für alle Antworten! Ich frage am Montag mal meinen Prof. was der 
dazu sagt....Poste dann das Ergebnis.

Schönes WE

von Rolf Magnus (Gast)


Lesenswert?

Ich gehe davon aus, daß der Fehler in dem Teil des Code liegt, den du 
uns verschwiegen hast. Du zeigst nämlich nicht, wie du die Variablen 
beschreibst oder ausliest. Poste doch mal ein minimales, aber 
komplettes Programm, das den Fehler zeigt.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.