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

11

23.02.2010, 17:52

Zitat von »"CBenni::O"«

Aber auch für sf::Thread braucht man eine function-pointer, da kann ich auch gleich die Standard-Funktionen benutzen :roll:
Brauchst du nicht, lies doch das Tutorial auf der SFML-Homepage.

Und welche Standardfunktionen? Standard-C++ bietet (noch) nichts zu Threads. Und ich würde allein schon Boost oder SFML nehmen, weil die Bibliotheken portabel sind und es bezüglich Design und Benutzerfreundlichkeit wahrscheinlich besser aussieht (oft auch nur schon, weil in modernem C++ geschrieben).

12

23.02.2010, 17:56

Zitat von »"CBenni::O"«

Google habe ich auch konsultiert.

Aber auch für sf::Thread braucht man eine function-pointer, da kann ich auch gleich die Standard-Funktionen benutzen :roll:


Viel mehr als auf der Seite bei dem ersten aufscheinenden Link kann mit sf::Thread scheinbar auch nicht machen. Da wirst du um boost::bind, boost::thread oder einen eigenen Wrapper wohl nicht herumkommen...

Btw. was ist denn an deine Funktionen Standard ;)
Tutorials zu OpenGL, Ubuntu und Programmieren allgemein: www.tomprogs.at

Forum und Wiki zum Programmieren lernen: proggen.org/forum.proggen.org

CBenni::O

1x Contest-Sieger

  • »CBenni::O« ist der Autor dieses Themas

Beiträge: 1 145

Wohnort: Stuttgart

  • Private Nachricht senden

13

23.02.2010, 19:55

Naja, ich kann CreateThread auch ohne iwelche Biliotheken benutzen ;)

Ich habe mir nun einen simplen Wrapper geschrieben, aber der verwendet reinterpret_cast. Ist dies wirklich so tragisch, wie in "Effektiv C++ Programmieren" beschrieben? Oder brauche ich keine andere Lösung finden?

mfg CBenni::O
Ein Mitglied der VEGeiCoUndGraSonMaWiGeS Bewegung.
42!
Aufräumen kann jeder, nur das Genie überblickt das Chaos!
Metal will never die!
1. Sppro Gamecontest - mein Beitrag

TrommlBomml

Community-Fossil

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

14

23.02.2010, 20:45

reinterpret_cast ist eigentlich nur für ziemlich rauhe casts geeignet, wo man sehr sicher sein sollte, dass das problemlos funktioniert, ansonsten eher static_cast.

CBenni::O

1x Contest-Sieger

  • »CBenni::O« ist der Autor dieses Themas

Beiträge: 1 145

Wohnort: Stuttgart

  • Private Nachricht senden

15

23.02.2010, 20:49

Naja, ich caste einen LPVOID (void*) in ein ResourceManager*. Dieser wird halt übergeben, aber da die Funktion LPVOID als Parameter haben muss, muss ich danach halt wieder casten, um die Memberfunktionen von ResourceManager verwenden zu können.

mfg CBenni::O
Ein Mitglied der VEGeiCoUndGraSonMaWiGeS Bewegung.
42!
Aufräumen kann jeder, nur das Genie überblickt das Chaos!
Metal will never die!
1. Sppro Gamecontest - mein Beitrag

16

23.02.2010, 20:52

Zitat von »"_Tom_"«

Viel mehr als auf der Seite bei dem ersten aufscheinenden Link kann mit sf::Thread scheinbar auch nicht machen.
Was genau meinst du? Du kannst von sf::Thread erben und da deine eigene Funktionalität einrichten. Oder eben den Callback benutzen.

Zitat von »"CBenni::O"«

Naja, ich kann CreateThread auch ohne iwelche Biliotheken benutzen ;)
Da du aber eh schon SFML (bei Boost weiss ich es nicht) benutzt, sieht mir das nicht wie ein guter Grund aus. Zumal die WinAPI auch eine Bibliothek ist.

Zitat von »"CBenni::O"«

Naja, ich caste einen LPVOID (void*) in ein ResourceManager*.
Um void* zu T* zu casten reicht static_cast, umgekehrt gehts implizit.

CBenni::O

1x Contest-Sieger

  • »CBenni::O« ist der Autor dieses Themas

Beiträge: 1 145

Wohnort: Stuttgart

  • Private Nachricht senden

17

23.02.2010, 21:20

Zitat von »"Nexus"«

Zitat von »"CBenni::O"«

Naja, ich caste einen LPVOID (void*) in ein ResourceManager*.
Um void* zu T* zu casten reicht static_cast, umgekehrt gehts implizit.


OK, wusste ich nicht ;) Danke!

Ich wollte keinen neuen Thread dafür aufmachen, aber: wie löscht man einen std::map<Ty,Tx*>?
als ich es mit einem Iterator versucht habe, knallte mir der Compiler 58 Fehlermeldungen vor den Kopf. (Zur info: Tx hat einen privaten Kopierkonstruktor)

mfg CBenni::O
Ein Mitglied der VEGeiCoUndGraSonMaWiGeS Bewegung.
42!
Aufräumen kann jeder, nur das Genie überblickt das Chaos!
Metal will never die!
1. Sppro Gamecontest - mein Beitrag

idontknow

unregistriert

18

23.02.2010, 21:30

.clear()

http://www.cplusplus.com/reference/stl/map/clear/

Quellcode

1
All the elements in the container are dropped: their destructors are called, and then they are removed from the container, leaving it with a size of 0.

CBenni::O

1x Contest-Sieger

  • »CBenni::O« ist der Autor dieses Themas

Beiträge: 1 145

Wohnort: Stuttgart

  • Private Nachricht senden

19

23.02.2010, 21:32

Das problem ist halt, dass das alles zeiger sind. Die Zeiger werden gelöscht, die Objekte, auf die sie zeigen aber nicht!

Danke :)

mfg CBenni::O
Ein Mitglied der VEGeiCoUndGraSonMaWiGeS Bewegung.
42!
Aufräumen kann jeder, nur das Genie überblickt das Chaos!
Metal will never die!
1. Sppro Gamecontest - mein Beitrag

idontknow

unregistriert

20

23.02.2010, 21:37

Warum? So lange du unter T keine standard Datentypen speicherst kommts aufs selbe raus, weil:

foo * F = new foo();
delete F; // -> F->~foo();

quasi kA wie man das erklären soll ich versteh dein Problem nicht so ganz und warum man einen int/bool/long Pointer in ner Map speichern sollte versteh ich eigentlich auch nicht..

Werbeanzeige