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

1

10.02.2004, 07:49

reinterpret_cast und dynamic_cast

da gerade suchfunktion nicht funktioniert...

a) was ist da unterschied zwischen
<reinterpret_cast> und <dynamic_cast>

b) was muss ich bei folgender umwandlung nehmen (und wieso)?

Quellcode

1
2
3
4
5
6
7
8
9
class Interface()
{
}

class Class() : public Interface
{
}

Interface *i = ??? <Interface*>(new Class);

2

10.02.2004, 09:43

also meines wissens kannste mit reinterpret_cast jeden pointer in jeden anderen pointer umwandeln (wird meistens verwendet um inkompatible pointer ineinander umzuwandeln). Ein dynamic_cast konvertiert einen Typen in einen anderen, und führt dabei einen runtime-check durch, ob der cast auch gemacht werden kann.

ich würd den code ganz anders machen, da musste glaub ich nix casten.

Quellcode

1
2
3
4
5
Interface* I = new Interface();

//oder

Interface* I = new Class();


Falls du doch casten willst, würd ich dir mal raten den reinterpret_cast zu probieren. Hört sich laut Beschreibung gut an. Aber ich bin net so der Experte, und ausserdem ends verschlafen.

3

10.02.2004, 10:33

Zitat von »"Pirat!"«


ich würd den code ganz anders machen, da musste glaub ich nix casten.

Quellcode

1
2
3
4
5
Interface* I = new Interface();

//oder

Interface* I = new Class();



das ist es ja, dass ich
von Interface* nach Class* casten muss

Quellcode

1
Interface *i = new Class;


weil Interface ganz virtuale klasse ist!

helium

Treue Seele

Beiträge: 180

Wohnort: NRW, Burscheid (nahe Köln)

  • Private Nachricht senden

4

10.02.2004, 11:48

Von der Basis zum Derivat kannst du sicher nur mit 'nem dynamic_cast casten. Aber das machst du ein deinem Code nicht.


Das ganze sieht in etwa so aus:

Quellcode

1
2
3
4
5
6
Interface *i =  new Class;
...

Class * c = dynamic_cast<Interface *>(i);
if (c != 0)
   ... // mach was mit c

Werbeanzeige