C++ Pointer auf null setzen

Klopfer91

Grünschnabel
Moin moin,

Ich habe folgendes Problem:

In meinem Programm übergebe ich einer Methode ein Objekt der Klasse Karte.
In dieser Methode soll überprüft werden ob eine Karte bereits umgedreht ist, und wenn ja, sollen diese beiden verglichen werden.

Klappt wunderbar, bis auf eine Stelle:
Code:
if(!letzteKarte)  //prüfen ob letzte karte null ist
		{
			letzteKarte = karte;
			return;
		}
Das klappt genau 1 Mal, denn ich weiß nicht, wie ich den Zeiger wieder leer kriege, ohne das Objekt zu löschen.
Also kein
Code:
delete letzteKarte;

Weiß jemand rat?
 

sheel

I love Asm
Hi

was haben denn die Karten für einen Variablentyp?
Und wie werden die zwei Instanzen erzeugt?
Bitte genau so, wie es im Code steht.
 

Klopfer91

Grünschnabel
Aaalso:
Meine zeiger:
Code:
Karte^ letzteKarte; //die Karte, die gerade umgedreht wurde
		Karte^ letzteKarte2; //Hilfsvariabel
Meine Karten Klasse:
Code:
public ref class Karte : System::Windows::Forms::PictureBox
Konstruktor:
Code:
public:
		Karte(int index, int x, int y);
Instanzierung der Karten:
Code:
Karte^ karte = gcnew Karte(intListe[randomint], x, y);


Das ganze wird mit der Methode aufgerufen:
Code:
void Memorie::bildGedrueckt(Karte^ karte)
{
	if(!warten)
	{
		karte->umdrehen();
		if(!letzteKarte)  //prüfen ob letzte karte null ist
		{
			letzteKarte = karte;
			return;
		}
		if(letzteKarte->index == karte->index)
		{
			gefundenePaare++;
			//letzteKarte = 0; //letzte Karte null setzen
			Karte^ letzteKarte;
		}
		else
		{
			warten = true;
			timer->Start();
			letzteKarte2 = karte;
		}
	}
}

Der zeiger letzteKarte soll wieder in den Zustand gebracht werden, wie er war bevor das erste mal Zeile 8 der Methode aufgerufen worden wurde.
 

sheel

I love Asm
Also...
a) Du weist letzteKarte eine karte zu (Karte 1).
Für diese Karte gibts noch irgendwo eine andere Variable x.
b) Du weist letzteKarte eine andere karte zu (Karte 2),
willst aber nicht, dass Karte 1 aus der anderen Variable x verschwindet?

Dann war es schon von Anfang an richtig.
delete gibts in .NET sowieso nicht, das macht der GarbageCollector.
Ein Objekt wird erst dann gelöscht, wenn es dazu keine einzige Vaiable mehr gibt.

Gruß
 

Nico Graichen

Erfahrenes Mitglied
Ohne es jetzt auszuprobieren (a) zu faul ^^ b) keine Compiler hier):
Aber in C# würde man "letzteKarte" einfach auf null setzen!
C#:
letzteKarte = null;