Funktion klappt nicht, Pointer Schuld?
-
Hallo, ich bekomms irgendwie nicht gebacken aaaaaaaaalso:
IDirectDrawSurface7* Bild; Bild = /* Liefert IDirectDrawSurface7* zurück */ DDLoadBitmap(LPCSTR szBitmap, int dx, int dy); /* Jetzt hab ich eine Klasse und dort soll ein Pointer wiederum auf Bild zeigen*/ [...] IDirectDrawSurface7 **texture; Konstruktor(IDirectDrawSurface7 *Bild){ texture = &Bild; }
Ist das so korrekt?
Weil wenn ich die Adresse von Bild (&Bild) und das Ziel des Pointer texture (*texture) in eine Datei schreibe stehen dort unterschiedliche Werte?
-
Ich kenn mich zwar nicht in DirectX aus. Aber IDirectDrawSurface7* ist so wie ich das sehe ein Pointer auf ein COM-Interface. Mit dem kannst du nicht "umgehen" wie in deinem Beispiel.
was genau ist übrigens
Konstruktor(IDirectDrawSurface7 *Bild){ texture = &Bild; }
-
Verkürzung von dem hier:
class Klasse { IDirectDrawSurface7 **texture; public: Klasse(IDirectDrawSurface7 *Bild){ texture = &Bild; } };
Es muss defintiv gehen, denn
IDirectDrawSurface7* Bild; IDirectDrawSurface7 **texture; Bild = /* Liefert IDirectDrawSurface7* zurück */ DDLoadBitmap(LPCSTR szBitmap, int dx, int dy); texture = &Bild;
geht problemlos. Nur den Umweg über die Methode bekomme ich nicht hin...
-
Berghuette schrieb:
Verkürzung von dem hier:
IDirectDrawSurface7* Bild; IDirectDrawSurface7 **texture; Bild = /* Liefert IDirectDrawSurface7* zurück */ DDLoadBitmap(LPCSTR szBitmap, int dx, int dy); texture = &Bild;
ich kenn ich jetzt auch nicht so mit dx aus, aber uebergibst du an DDLoadBitmap uninitialisierte, temporaere objekte ?
was auch immer
-
Hallo,
das kann so nicht funktionieren, denn mit &Bild im Konstruktor bekommt man die Adresse der Variablen Bild auf dem Stack, und die hat nun nichts mehr mit der Adresse zu tun, an der die übergebene Bild-Variable liegt. Was spricht dann eigentlich dagegen, den Konstruktor wie folgt zu definieren:
class Klasse { IDirectDrawSurface7 **texture; public: Klasse(IDirectDrawSurface7 **Bild){ texture = Bild; } };
der Aufruf dann:
IDirectDrawSurface7* Bild; Bild = /* Liefert IDirectDrawSurface7* zurück */ DDLoadBitmap(LPCSTR szBitmap, int dx, int dy); Klasse kl(&Bild);
?
MfG
-
Wird gleich ausprobiert !
Das Bild wird definitv geladen und befindet sich im VRAM
-
Juhu es geht *knuddel*
Hab sogar verstanden warum *stolzist*