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
Anonymous
unregistriert
Zitat von »"Outsider"«
wie man an diese vftable oder den vfptr "bequem" dran kommt, also ohne einfach nur herum zu casten.
Ich wüsste gerne wie das geht, so dass man zB Methoden einer klasse direkt aus der vftable der klasse aufrufen könnte.
Zitat von »"Outsider"«
was mich außerdem interessiert ist, ob es möglich ist anhand eines übergebenen zeigers auf eine bestimmte klasseninstanz zu bestimmen, welchen typ dieses objekt hat, denn der pointer kann auch einfach gecasted worden sein.
Ein Beispiel:
C-/C++-Quelltext
1 2 3 4 5 6 7 8 9 10 11 12 13 class A { public: int m_iA; }; class B : public A { public: int m_iB; }; void foo(A* pA) { //zeigt A* auf ein B? }
Zitat von »"Outsider"«
Und was ich auch gerne wüsste, aber nicht erfahren hab:
Steht irgendwo die größe einer instanz?
Bei dem Beispiel wäre eine instanz der klasse B ja einen int größer als eine von A...
wäre das so, dann könnte man sich den guten alten size member am anfang sparen...
Anonymous
unregistriert
Zitat von »"Patrick"«
[...] An die Daten die im RAM sind kommst Du Atens nicht dran, Btens hast Du da drin nichts zu suchen (zu gefährlich) und Ctens versteht das selbst ein guter Assemblerprogrammierer kaum noch was da drin ist.
Alter Hase
Zitat von »"Outsider"«
Ich wüsste gerne wie das geht, so dass man zB Methoden einer klasse direkt aus der vftable der klasse aufrufen könnte.
Zitat
C-/C++-Quelltext
1 2 3 4 5 6 7 8 9 10 11 12 13 class A { public: int m_iA; }; class B : public A { public: int m_iB; }; void foo(A* pA) { // Zeigt pA auf ein B? }
Und was ich auch gerne wüsste, aber nicht erfahren hab:
Steht irgendwo die größe einer instanz?
Bei dem Beispiel wäre eine instanz der klasse B ja einen int größer als eine von A...
wäre das so, dann könnte man sich den guten alten size member am anfang sparen...
Alter Hase
Zitat von »"Spik)evil("«
warum sollte sizeof(A) nicht funktionieren??
Alter Hase
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
class Base { int a; }; class Derived : public Base { int b; } void doSomething(Base& b) { int objectsize = sizeof(b); cout << objectsize; } |
C-/C++-Quelltext |
|
1 2 3 4 5 |
Base b; Derived d; doSomething(b); doSomething(d); |
Alter Hase
Werbeanzeige