008
16.01.2007, 20:16 Uhr
FloSoft
Medialer Over-Flow (Administrator)
|
So folgender Trick hat geklappt:
in der Library:
Code: |
ArchivItem_Bitmap renamed to baseArchivItem_Bitmap ArchivItem_Bitmap_Raw renamed to baseArchivItem_Bitmap_Raw usw
|
Code: |
ArchivItem_Bitmap -virtual-> baseArchivItem_Bitmap baseArchivItem_Bitmap_Raw -virtual-> baseArchivItem_Bitmap ArchivItem_Bitmap_Raw -> baseArchivItem_Bitmap_Raw, ArchivItem_Bitmap usw
|
dadurch bleibt die Schnittstelle nach außen gewahrt, und im Programm kann man nun folgendes:
Code: |
glArchivItem_Bitmap -virtual-> baseArchivItem_Bitmap glArchivItem_Bitmap_Raw -> baseArchivItem_Bitmap_Raw, glArchivItem_Bitmap usw
|
und voila: es klappt so wie es soll, da die "Virtualisierungs-Raute" so erhalten bleibt.
(ok ein paar Änderungen in den Programmen war trotzdem nötig: ein paar C-Style-Casts mussten in dynamic_casts umgewandelt werden, aber nix tragisches)
Achja - und scheinbar hat das Alignment dazwischengefunkt, ich habe nun alle daten per
C++: |
#pragma pack(push, 1) ... #pragma pack(pop)
|
"gesichert", nun gibts keine Überschneidungen mehr je Kontext (u.A da er scheinbar in der Library anders gefüllt hat als in der Anwendung dann
Naja somit wär das auch gelöst *jihaa* -- class God : public ChuckNorris { }; |