C ++ - Strukturinitialisierung

8

Das Folgende ist eine gekürzte Version meiner Sprite-Klasse:

%Vor%

Ich möchte ein SpriteState-Objekt über eine Elementfunktion erstellen, die in etwa wie folgt aussieht:

%Vor%

Ich erhalte den folgenden Fehler:

  

Eine nicht statische Mitgliedsreferenz muss relativ zu einem bestimmten Objekt sein

Die Grundidee hinter der Klasse selbst besteht darin, die verschiedenen Zustände des Sprites so zu speichern, wie es sich ändert, so dass ich bei Bedarf leicht in einen vorherigen Zustand zurückkehren kann.

In den meisten Fällen wird der Sprite jedoch nur mit neuen Positionswerten aktualisiert, während Breite, Höhe, Rotation und Skalierung nahezu unverändert bleiben. Das bedeutet, dass ich nur den Positionswert während des Hochspringens ändere und erneut Referenzen vom letzten speichere Status für die anderen Werte gespeichert.

Ich möchte daher in der Lage sein, Standardwerte für die Funktion festzulegen, so dass ich die gleichen Werte nicht mühsam wiederholt schreiben muss.

Irgendwelche möglichen Ideen zur Umsetzung?

    
dk123 19.12.2012, 11:03
quelle

4 Antworten

1

Sie sollten eine Kopie des SpriteState erstellen und dann ändern:

%Vor%

Jede Struktur und Klasse hat standardmäßig einen Kopierkonstruktor der folgenden Form:

%Vor%

Dies kopiert standardmäßig die Daten in die Klasse / struct.

    
yiding 19.12.2012, 11:07
quelle
2

Überladen Sie es:

%Vor%     
Pubby 19.12.2012 11:09
quelle
2

Standardargumente werden im Kontext des Aufrufers ausgewertet. Wenn Sie also auf einen Member Ihrer Klasse zugreifen müssen, um den Standardwert zu erhalten, können Sie keine Standardargumente verwenden.

Auf der anderen Seite können Sie Überladen verwenden, um den gleichen Effekt zu erzielen:

%Vor%     
Bart van Ingen Schenau 19.12.2012 11:24
quelle
1

Die Member-Funktion kann keine Klassenmitglieder aufrufen. Sie können es folgendermaßen archivieren:

%Vor%

Dann rufen Sie diese Funktion in einem anderen member function :

auf %Vor%     
billz 19.12.2012 11:52
quelle

Tags und Links