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

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

21

29.03.2009, 17:57

ja aber dein code da oben dereferenziert den zeiger ja weil

Quellcode

1
f->bar();  <=>  (*f).bar();

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

22

29.03.2009, 18:02

Hmm. Jo, ich habe dich vorher falsch verstanden. Hmm. Hatte für den tatsächlichen Aufruf eher etwas anderes im Kopf, sodass es nicht wirklich eine dereferenzierung ist.. Muss mal genau nachschauen, wie das da läuft.. :?

Gotbread

Alter Hase

Beiträge: 421

Beruf: Student (Etechnik) + Hiwi

  • Private Nachricht senden

23

29.03.2009, 19:13

der wirkliche aufruf ist ja

C-/C++-Quelltext

1
foo::bar(f);


kein problem mit 0 :D

bei vtbls hättest du eine dereferenzierung

C-/C++-Quelltext

1
(*(*f)[method_index])(f);


das macht dann probleme
Mfg Goti
www.gotbread.bplaced.net
viele tolle spiele kostenlos, viele hardware-basteleien :)

"Es ist nicht undicht, es läuft über" - Homer Simpson

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

24

29.03.2009, 19:31

Zitat von »"Gotbread"«

der wirkliche aufruf ist ja

C-/C++-Quelltext

1
foo::bar(f);



ähm, wie soll das funktionieren!?

Gotbread

Alter Hase

Beiträge: 421

Beruf: Student (Etechnik) + Hiwi

  • Private Nachricht senden

25

29.03.2009, 19:45

C-/C++-Quelltext

1
2
3
4
struct foo
{
void bar(){}
};


foo ist die klasse, bar die memberfunktion.
das das im code nicht klappt ist klar, es geht um die interne
realisierung. imho wird dasso gemacht, this-pointer als ersten
parameter.
Mfg Goti
www.gotbread.bplaced.net
viele tolle spiele kostenlos, viele hardware-basteleien :)

"Es ist nicht undicht, es läuft über" - Homer Simpson

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

26

29.03.2009, 19:46

ja. aber die interne realisierung ändert nix dran dass es undefiniertes verhalten ist...

27

30.03.2009, 10:57

C-/C++-Quelltext

1
delete this;

Das ich das noch erleben muss, wie Scheisse ist das denn ...
If it were not for laughter, there would be no Tao.

Anonymous

unregistriert

28

30.03.2009, 10:59

knivil
Manchmal recht effektiv oder unausweichlich. Aber dieses "Manchmal" wird sich bei den Usern hier in Board auf unter 1% gehen.

Gotbread

Alter Hase

Beiträge: 421

Beruf: Student (Etechnik) + Hiwi

  • Private Nachricht senden

29

30.03.2009, 14:22

Das ganze COM-System und damit alle DirectX Komponenten bauen
darauf auf (IUnknown::Release). Wird also von recht vielen hier (unbewußt)
benutzt
Mfg Goti
www.gotbread.bplaced.net
viele tolle spiele kostenlos, viele hardware-basteleien :)

"Es ist nicht undicht, es läuft über" - Homer Simpson

Anonymous

unregistriert

30

30.03.2009, 14:32

Ich meinte eher, dass dies in den selbstgeschriebenen Klassen wenig Anwendung findet.

By the way: In COM-Objekten wird kein "delete this" gemacht, sondern über die Object-ID des COM-Objekts wird vom COM-Manager die Instanz freigegeben *klugscheiß* :) delete wirst du da faktisch so wenig findet wie free ;)

Werbeanzeige