(gelöst) [C++] Zwei Objekte in einem new
Verfasst: 04.06.2009, 08:31
Hi,
Ich habe zwei Klassen. Die erste Klasse wird bei jeder Konstruktion definitiv eine Instanz der zweiten Klasse allokieren. Ich möchte nun, dass beide Objekte in nur einem Speicherblock mit einer Allokation untergebracht werden können.
Normalerweise würde ich die zweite Klasse einfach zu einem Member der ersten Klasse machen, aber es handelt sich um ein Interface … alle Implementationen des Interfaces müssten identischer Größe sein, weil sie nur pur virtuelle Funktionen implementieren und nichts Neues (weder Variablen noch Funktionen) hinzufügen.
In VC6 konnte man afaik den operator sizeof überladen, so dass man sizeof(Klasse1) einfach um sizeof(Klasse2) Bytes größer gemacht und das zusätzliche Objekt per (this + 1) erhalten hat … afaik ist das Überladen von sizeof aber nicht mehr möglich …
… kann ich den operator new der Klasse so überladen, dass er sizeof(Klasse2) (plus Alignment) Bytes mehr allokiert?
Gruß, Ky
Ich habe zwei Klassen. Die erste Klasse wird bei jeder Konstruktion definitiv eine Instanz der zweiten Klasse allokieren. Ich möchte nun, dass beide Objekte in nur einem Speicherblock mit einer Allokation untergebracht werden können.
Normalerweise würde ich die zweite Klasse einfach zu einem Member der ersten Klasse machen, aber es handelt sich um ein Interface … alle Implementationen des Interfaces müssten identischer Größe sein, weil sie nur pur virtuelle Funktionen implementieren und nichts Neues (weder Variablen noch Funktionen) hinzufügen.
In VC6 konnte man afaik den operator sizeof überladen, so dass man sizeof(Klasse1) einfach um sizeof(Klasse2) Bytes größer gemacht und das zusätzliche Objekt per (this + 1) erhalten hat … afaik ist das Überladen von sizeof aber nicht mehr möglich …
… kann ich den operator new der Klasse so überladen, dass er sizeof(Klasse2) (plus Alignment) Bytes mehr allokiert?
Gruß, Ky