Hi,
ich hab ein C++ problem und hoffe mir kann hier jemand helfen.
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| class CITestBase { public: virtual void doSomething(); };
class CITest : public CITestBase { private: float data[4]; }; |
Wenn ich hier mir von CITest die size ausgeben lasse, kommt 20 raus:
C#-Quelltext
1:
| cout << sizeof(CITest) << endl; |
allerdings sollte es ja eigentlich 16 sein, also 4 * float = 4 * 4 = 16
Wenn ich bei der CITestBase das "virtual" von der doSomething() funktion wegmache stimmt die größe mit 16byte.
Das Problem ist jetzt, ich brauche die CITest-Klasse mit einer größe von 16byte (wird als array dann an eine andere funktion übergeben die kein padding etc unterstüzt) und brauche aber auch die virtual-funktion.. kann ich da irgendwas tun oder muß ich mir nen workarround ausdenken? :/
Aya
PS: Auch das ganze mit #pragma pack(1) drumrum hift nichts..