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!

Suchergebnisse

Suchergebnisse 1-20 von insgesamt 375.

Werbeanzeige

03.07.2018, 12:54

Forenbeitrag von: »TigerClaw25«

Udemy - Tutorial zu Unreal Engine und SFML

Hallo Zusammen, ich würde gerne erneut mit C++ die Spieleentwicklung fortführen. Jetzt stellt sich zunächst die Frage, was für den Einstieg sinnvoller wäre. SFML oder eher Richtung Unreal Engine ? Mit SFML oder SDL habe ich als Übung sicherlich mehr Fussarbeit, aber mit der Unreal Engine auch gleich die grafische Sicht sowie den Editor. Auf Udemy haben die gerade Angebotswochen und dort wuerde ich gerne den Kurs The unreal Engine developer fuer 10 Eur testen. Hat jemand Erfahrung mit der Plattfo...

05.08.2017, 17:01

Forenbeitrag von: »TigerClaw25«

Poll und timerfd unter Linux

Hi, ich habe folgendes Problem. Ich habe eine Tätigkeit angetreten, bei der ich mit Linux arbeite. Damit habe ich aber bisher wenig zutun gehabt und meine C/C++ Kentnnisse sind eher Richtung Grundlagen. Daher habe ich als erste Aufgabe das Einarbeiten in den POSIX-message-queues bekommen. Das habe ich mit der offiziellen Dokumentation und zahlreichen Beispielen auch hinbekommen, ohne aber wirklich zu verstehen, wie Linux genau arbeitet. Das ist alles ziemlich Neuland für mich. Meine nächste Aufg...

05.08.2017, 13:48

Forenbeitrag von: »TigerClaw25«

Poll und timerfd unter Linux

Hallo zusammen, kennt sich jemand mit timerfd und poll/epoll unter Linux aus und kann mir genau erklären, was es damit auf sich hat? Eventuell auch in Kombination mit threads und multithreading?

02.08.2017, 19:38

Forenbeitrag von: »TigerClaw25«

Parameterliste der main-Funktion

Also habe ich im Prinzip drei Arrays,wobei jedes davon ein String ist. Auf die Anfangs-Adresse zeigt dann ein Zeigerarray y[] und darauf dann ein Zeiger x? Beispiel: char *y[]={"text1\n", "text2\n"} ; char **x=y; Korrekt? Mit *x gebe ich dann von [1] aus, da es äquivalent jst mit *(x+1), also auch x[1]. Was mich unter anderem auch verwirrt ist **argv statt *argv[]

02.08.2017, 17:26

Forenbeitrag von: »TigerClaw25«

Parameterliste der main-Funktion

Hallo Zusammen, ich habe eine Frage zu Zeigern und der Parameterliste der main-Funktion. char-Arrays und Zeiger sind mir bekannt. Wenn ich beispielsweise die Anfangsadresse des char-Arrays einem Zeiger zuweisen möchte, tue ich das so: ptr = &charAuswahl[0] oder ptr=charAuswahl. Nun habe ich folgendes Problem. Ich habe ein Programm und übergebe über das Linux-Terminal drei char-Parameter. Demnach bezieht sich meine Frage auf "main(int argc, char **argv)". Nun habe ich eine Funktion m_t m_open (co...

28.07.2017, 07:19

Forenbeitrag von: »TigerClaw25«

Überladen von Operatoren

Im Buch habe ich mehrere Beispiele gesehen, bei denen kein INstanzname existiert. Genau so wie in meinem Beispiel oben mit "return CVektor3D(m_x,m_y, m_z);". Man gibt nur die Klassenbezeichnung an ohne eine Instanz. Warum funktioniert soetwas überhaupt? Mit return gebe ich eine Klasseninstanz zurück bzw. rufe den Kopierkonstruktor auf und kann somit die Werte x,y und z an die Klasse zurückgeben, um das Ergebnis der Addition zu erhalten.

27.07.2017, 15:58

Forenbeitrag von: »TigerClaw25«

Singleton

Was ich bei Singletons aber so faszinierend finde, weil ich gerade alles noch einmal lese, ist die Tatsache, dass man ohne vorher eine Instanz erzeugt zu haben, direkt auf eine Funktion Get des Singletons zugreifen kann, um dann eine einzige Instanz zu erzeugen. Denn eigentlich sind Klassendeklarationen Schablonen. Das man auch ohne Instanzen eine solche Schablone aufrufen kann, um sich dann die Instanz zu erstellen, finde ich interessant.

27.07.2017, 14:37

Forenbeitrag von: »TigerClaw25«

Überladen von Operatoren

Ok, so mache ich das. Eine Frage noch. Wozu überhaupt return bzw. wo wirkt es sich genau aus? Die Werte werden innerhalb der "*.operator"-Funktion bereits durch "+=" geändert. Das heißt, mit einem void wäre es auch getan und ich könnte die Membervariablen m_x, m_y und m_z auch ohne Rückgabewert aufrufen.

27.07.2017, 13:54

Forenbeitrag von: »TigerClaw25«

Überladen von Operatoren

Ich habe ein wenig mit den überladenen Operatoren experimentiert, da in dem Buch nur mit welchen ohne Rückgabetyp gearbeitet worden ist. C-/C++-Quelltext 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 #include <iostream> using namespace std; class CVektor3D { public: CVektor3D(float x, float y, float z); CVektor3D operator+=(const CVektor3D &rhs) { m_x+=rhs.m_x; m_y+=rhs.m_y; m_z+=rhs.m_z; return CVektor3D(m_...

27.07.2017, 07:39

Forenbeitrag von: »TigerClaw25«

SDL 2.0 Sound

(SDLCALL * SDL_AudioCallback) (void *userdata, Uint8 * stream, int len); Ist mein Typenbezeichner. Und die Struktur "SDL_AudioSpec" enthält als Element unter anderem "SDL_AudioCallback callback". Das heißt, dass "callback" mein Zeiger auf eine Funktion ist. SDL_AudioCallback ist ja der Typ-Alias.

26.07.2017, 16:29

Forenbeitrag von: »TigerClaw25«

SDL 2.0 Sound

Zitat von »Techel« wav_spec ist eine Instanz der Struktur SDL_AudioCallback. Die hat verschiedene Member, unter anderem 'callback'. Auf 'callback' greifst du wie üblich mit einem Punkt zu. 'callback' ist vom Datentyp 'SDL_AudioCallback'. 'SDL_AudioCallback' ist als Datentyp ein Zeiger auf eine Funktion mit der Signatur void(void*, Uint8*, int). Somit kann 'callback' einen Zeiger auf eine Funktion mit einer solchen Signatur halten. Ein Blick in die Header hilft da auch: "typedef void (SDLCALL * ...

26.07.2017, 15:56

Forenbeitrag von: »TigerClaw25«

SDL 2.0 Sound

Zitat von »David Scherfgen« int *ptr kannst du keinen Zeiger auf eine Funktion zuweisen! Das ist ein Zeiger auf einen int. Selbst wenn die Funktion als Rückgabetyp int hätte, ginge das nicht. Eine Funktion ist eine Funktion und nicht das, was sie zurückgibt. Lies bitte die Artikel, die du selbst verlinkt hast! Das heißt, wenn ich eine Funktion wie "int foo()" habe, kann ich erst dann die Zuweisung "ptr=foo();", wenn ich etwas in der Art "int (*ptr) (Parameterdatentypen)" durchgeführt habe?! Ach...

26.07.2017, 13:19

Forenbeitrag von: »TigerClaw25«

SDL 2.0 Sound

Ok, ich verstehe es jetzt, aber sollte "static SDL_AudioSpec wav_spec;" nicht mit einem Sternchen sein? Beispiel: C-/C++-Quelltext 1 2 3 4 5 6 7 void foo(){} // Funktion int main(){ int *ptr; //Zeiger auf Funktion ptr=foo; return 0; } Die Struktur "wav_spec" ist nicht als Zeiger deklariert. Das verstehe ich nicht.

26.07.2017, 12:04

Forenbeitrag von: »TigerClaw25«

SDL 2.0 Sound

Da steht bei der Deklaration der Funktion aber void foo und nicht void *foo, wie in vielen Büchern beschrieben wird.

26.07.2017, 11:56

Forenbeitrag von: »TigerClaw25«

SDL 2.0 Sound

Das verstehe ich. Aber wieso werden dann Funktion wie void *foo() definiert, während andere djrekt einem Zeiger zugewiesen werden, ohne das ein Sternchen steht? Und das zweite ist, dass die Funktion von Typ void ist, wav_spec.callback jedoch vom Typ uint8.

26.07.2017, 10:29

Forenbeitrag von: »TigerClaw25«

SDL 2.0 Sound

void my_audio_callback(void *userdata, Uint8 *stream, int len) -> die Funktion hat keinen Zeiger und die Parameter Liste fehlt auch . Und was ist das der Unterschied zwischen diesem funktionszeiger http://www.willemer.de/informatik/cpp/fktzgr.htm und dem hier http://www.oopweb.com/CPP/Documents/Func…/FPT/m_fpt.html

26.07.2017, 07:23

Forenbeitrag von: »TigerClaw25«

SDL 2.0 Sound

Guten Morgen, ich möchte das SDL Spiel aus dem Buch im Sound erweitern. Dabei bin ich auf folgendes gestoßen: https://gist.github.com/armornick/3447121 Dazu habe ich ein paar Fragen. Warum wird folgende Zuweisung gemacht: "wav_spec.callback = my_audio_callback"? Ich kenne diese Art von Zuweisung nur von Funktionen, die einen Rückgabe wert haben,was hier nicht der Fall ist. Das zweite ist, dass die Funktion selbst eine Parameterliste hat. Die Funktion wird aber ohne Parameterliste aufgerufen. Kan...

25.07.2017, 14:48

Forenbeitrag von: »TigerClaw25«

Zeiger und Referenzen - Aussage im Buch

Also im Prinzip so ähnlich, wie ich das verstanden habe. Im Framework zeigt habe ich ein Objekt, auf dem ein Zeiger zeigt. Dessen Adresse teilen wir auch CSprite mit, um es nutzen zu können. Also darf ich den Speicher, auf dem der CSprite-Zeiger zeigt, nicht freigeben. Mich hatte es zum einen verwirrt, dass im Buch folgendes stand: "Wir holen uns ja kein Objekt sondern einen Zeiger darauf". Für mich klang das, als würde im Framework das Objekt selbst verwendet werden. Aber dort ist es auch nur e...

25.07.2017, 14:11

Forenbeitrag von: »TigerClaw25«

Zeiger und Referenzen - Aussage im Buch

Weil das Weglassen von "*" die Adresse liefert. Da kommt man leicht durcheinander. Ich habe mir dazu einfach folgendes gemerkt: Mit "->" oder "(* xyz)." erlange ich Zugriff auf die Klassenmethoden- und membervariablen. nach dem Operator gebe ich an, auf welches Element ich Zugriff erlangen möchte wie "Spieler1->ptr". Möchte ich die Adresse des Gesamtausdrucks/elements, setze ich "&" davor, also "&Spieler1->ptr". So versuche ich es mir zu merken. Was ich im Buch persönlich sehr schade als kleine ...

25.07.2017, 13:29

Forenbeitrag von: »TigerClaw25«

Zeiger und Referenzen - Aussage im Buch

Letzteres hat jedoch den Nachteil, dass für die Adresse Dereferenziert und dann wieder referenziert werden muss: &(*Spieler1).ptr für die Adresse &Spieler1->ptr Das hier geht leider nicht: Spieler1.ptr , obwohl es auf den ersten Blick den Anschein macht.

Werbeanzeige