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

JossBoss

Treue Seele

  • »JossBoss« ist der Autor dieses Themas

Beiträge: 182

Wohnort: Luxemburg

  • Private Nachricht senden

1

26.05.2006, 18:30

Wann Zeiger Objekt und wann nicht?

Hallo mal wider...
war lange ab....

meine frage iust, z.b. in breakanoid, hat man für CBall objekte keine zeiger definiert, für CGame und CBreakanoid aber schon... wann benutzt man zeiger und wann nicht?

und wieso ist in breakanoid in der CGame klasse, bei CreateBall und CreateBlockRow m_cBall[iBall].m_pGame = this;???
wieso weist man der variablen this zu? wieso gehts nicht ohne das??
die 2 methoden werden ja immer nur von CGame aufgerufen, also ist this ja auch ein CGame Objekt...

thx & mfg!!
Gratis Tools+Software und Games:

www.miraculous.eu.tc

BlackSnake

Community-Fossil

Beiträge: 1 549

Beruf: Student

  • Private Nachricht senden

2

26.05.2006, 19:08

hi,

schau dir doch mal an was "this" bedeutet. in irgend welche tuts oder so muss das stehen.

BlackSnake

Community-Fossil

Beiträge: 1 549

Beruf: Student

  • Private Nachricht senden

3

26.05.2006, 19:10

this wird angegebn wenn man lokale variablen einer methode mit klassenelementen unterscheiden will, die den gleichen name tragen.

JossBoss

Treue Seele

  • »JossBoss« ist der Autor dieses Themas

Beiträge: 182

Wohnort: Luxemburg

  • Private Nachricht senden

4

26.05.2006, 19:17

hallo...
ich versteh schon was this ist, nur weshalb man das in diesem fall benutz

thx & mfg
Gratis Tools+Software und Games:

www.miraculous.eu.tc

dbGAMES

Treue Seele

Beiträge: 323

Wohnort: Frankfurt

Beruf: Student

  • Private Nachricht senden

5

26.05.2006, 19:27

die klasse CBall hat einen zeiger auf CGame. jetzt wird in einer CGame funktion der zeiger aus CBall (der ja auf CGame zeigen soll) ganz einfach mit this ausgefüllt, er zeigt also auf diese CGame instanz.
ich weiss nicht ob ich das verständlich
erklärt habe, wenn nicht frag einfach nochmal nach

JossBoss

Treue Seele

  • »JossBoss« ist der Autor dieses Themas

Beiträge: 182

Wohnort: Luxemburg

  • Private Nachricht senden

6

27.05.2006, 09:45

also zum teil hab ich es verstanden.
aber wieso macht man das nicht auch bei den anderen objekt zeiger z.B.
CIntro *m_pIntro; usw??
und dan hab ich halt noch das andere prob....
meine frage iust, z.b. in breakanoid, hat man für CBall objekte keine zeiger definiert, für CGame und CBreakanoid aber schon... wann benutzt man zeiger und wann nicht?

thx & mfg!
Gratis Tools+Software und Games:

www.miraculous.eu.tc

JossBoss

Treue Seele

  • »JossBoss« ist der Autor dieses Themas

Beiträge: 182

Wohnort: Luxemburg

  • Private Nachricht senden

7

27.05.2006, 20:50

Kann mir bitte jemand helfen??? :cry:

Zitat


meine frage iust, z.b. in breakanoid, hat man für CBall objekte keine zeiger definiert, für CGame und CBreakanoid aber schon... wann benutzt man objekt-zeiger und wann nicht?

und wieso ist in breakanoid in der CGame klasse, bei CreateBall und CreateBlockRow m_cBall[iBall].m_pGame = this;???
wieso weist man der variablen this zu? wieso gehts nicht ohne das??
die 2 methoden werden ja immer nur von CGame aufgerufen, also ist this ja auch ein CGame Objekt...


thx & mfg!! :D :D
Gratis Tools+Software und Games:

www.miraculous.eu.tc

rewb0rn

Supermoderator

Beiträge: 2 773

Wohnort: Berlin

Beruf: Indie Game Dev

  • Private Nachricht senden

8

27.05.2006, 21:04

die Frage warum die einen objekte als zeiger erstellt werden und die anderen nicht kann nur David beantworten, nur er weiß was er sich in diesem Fall dabei gedacht hat.

Prinzipiell ist das immer eine Frage des Konzepts und des eigenen Geschmacks. Ich hab jetzt keine Lust den Code rauszusuchen, deswegen kann ich nicht gucken ob das jetzt einen bestimmten Grund hat in diesem Fall.

Zeiger solltest du verwenden, wenn du von einer Klasse planst verschiedene Objekte zu erstellen und miteinander zu tauschen, wenn du einen Array zur Laufzeit erstellen willst oder wenn du Objekte als Parameter übergibst (das ist per Zeiger schneller)

Lemming

Alter Hase

Beiträge: 550

Beruf: Schüler

  • Private Nachricht senden

9

27.05.2006, 21:44

also beim breakanoid ist es halt einfach so, dass er die bälle in einem array aufbewahrt hat. warum weiß ich nicht, ich hätts mit nem std::vector oder ner std::list gemacht. weiß ich jetzt nicht so genau, aber da er im buch die stl nicht nutzt, vll um anfänger nicht zu verwirren, hat er halt nen array davon erzeugt... aber auch das ist nur spekulation ;)

und was die frage mit dem CIntro* soll versteh ich nicht ganz.
Es gibt Probleme, die kann man nicht lösen.
Für alles andere gibt es C++...

JossBoss

Treue Seele

  • »JossBoss« ist der Autor dieses Themas

Beiträge: 182

Wohnort: Luxemburg

  • Private Nachricht senden

10

28.05.2006, 11:30

aso thx, heisst das, dass man die objekte eigentlich getrost durch zeiger ersetzen kann??
gut, das werd ich wohl machen ;-)
na ja für die bälle die std::vektor zu benutzen wär vielleicht etwas übertrieben ;-), ist ja nich soooooo viel ;-)

@Lemming: Was meinst du mit

Zitat

und was die frage mit dem CIntro* soll versteh ich nicht ganz.
??? ???

jetzt bleibt mir nur noch das mit den this zeigern offen...
CBall braucht das ja um auf das ball-model in CGame zuzugreifen, aber könnte man den CGame Zeiger nicht einfach per new deklarieren, dann wär der this zeiger überflüssig oder wie?? dann zeigt er ja auch auf eine instanz...


mfg & thx!!
Gratis Tools+Software und Games:

www.miraculous.eu.tc

Werbeanzeige