Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

11

17.12.2013, 21:30

Zum Einen sollte man ein solches Objekt am Besten gar nicht verschieben sondern wenn dann als Referenz nutzen und zum Anderen kann man so ein Objekt problemlos mit Move-Semantik verschieben.
Das ändert aber am Problem überhaupt gar nichts. Das Sprite hat eine Referenz auf die Textur. Egal wie man die nun kopiert oder verschiebt, das sf::Sprite wird dadurch ungültig und zeigt nur noch Grütze an. Ein Smart-Pointer dagegen ist sogar eine sehr schlaue Idee, weil damit nämlich alle Referenzen aus den sf::Sprites heraus gültig bleiben, da sich die Adresse der Textur selbst niemals ändert.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Beiträge: 1 223

Wohnort: Deutschland Bayern

Beruf: Schüler

  • Private Nachricht senden

12

17.12.2013, 22:28

Zitat

Egal wie man die nun kopiert oder verschiebt

Die Frage die sich mir stellt ist nur: Warum sollte er das Objekt verschieben wollen?

Zitat

als müsste man C++11 noch zusätzlich aktivieren

"-std=c++11" in der Kommandozeile.
Was gibt es denn für Fehler?
Auf C++11 würde ich heute nicht mehr verzichten.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

13

18.12.2013, 08:10

Die Frage die sich mir stellt ist nur: Warum sollte er das Objekt verschieben wollen?
Du hast doch was erzählt von Move:
zum Anderen kann man so ein Objekt problemlos mit Move-Semantik verschieben.
Und das behebt sein Problem eben nicht. Was er wohl eigentlich will, ist eine Referenz auf eine Textur in irgendwelche Methoden zu geben oder eben in Methoden Texturen erzeugen. Wenn er dann aber auch noch Sprites erstellt, die diese Textur referenzieren, muss das Objekt auch immer an derselben Stelle bleiben, was mit Move wie gesagt nicht geht. Auch nicht per Copy, denn genau das ist ja sein Problem. Das kann man eigentlich nur umgehen, indem das Objekt immer an derselben Stelle im Speicher bleibt. Ergo sind Smart-Pointer hier die richtige Lösung des Problems.
Wenn die Textur nur an eine Methode übergeben werden soll, die dann ein Sprite erstellt, reicht es eventuell auch die Textur als Referenz zu übergeben statt by value. Das hängt aber eben davon ab, was er tut. Eine Move-Operation jedenfalls wird es nie beheben, wie man es auch dreht und wendet.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Asbestbrezel

Frischling

  • »Asbestbrezel« ist der Autor dieses Themas

Beiträge: 41

Wohnort: Solingen

  • Private Nachricht senden

14

18.12.2013, 16:05

Die ganzen g++-Fehlermeldungen hatten nur zur Folge, dass ich die const durch constexpr austauschen musste, also doch nicht so schlimm. Ansonsten nutze ich jetzt emplace_back anstatt push_back. Dadurch müssen die Player inkl. Sprites und Texturen nicht mehr kopiert werden und alles ist gut :)
Trotzdem gut zu wissen, dass es intelligente Zeiger gibt, die werde ich dann ggf. einsetzen.

Danke euch allen für die Hilfe :)

Werbeanzeige