003
15.08.2006, 13:54 Uhr
Yadgar
|
High!
Zitat von ~Blubber2063: |
Ja natürlich, du kannst ja mit new ein dynamisches Objekt erzeugen, auf dieses kannst du eine Referenz zurückgeben, damit hast du nicht diese gewaltigen Kopieraktionen bei grossen Datenmengen.
|
Das Dumme dabei ist in meinem Fall, dass es sich bei dem benötigten Objekt um ein Feldobjekt ("FixedArray") handelt, das normalerweise gleich mit einer Dimensionsangabe initialisiert wird:
FixedArray f(10); // Feld mit 10 Elementen
Wenn ich hingegen erst einmal mit
FixedArray* f = new FixedArray;
Speicherplatz anfordere, wird für f der Standardkonstruktor verwendet, und der weist dem Objekt den Dimensionswert 0 zu.
Da ich ja kein Feld von FixedArray-Elementen erstellen will, sondern FixedArray selbst schon Feldcharakter hat, fällt der Feldoperator new[] leider aus... und FixedArray im Nachhinein einen neuen Dimensionswert zuzuweisen würde auf eine unzulässige Bereichsüberschreitung hinauslaufen!
Was tun? Bleibt da nicht doch nur die Rückgabe per Wert übrig?
Bis bald im Khyberspace!
Yadgar -- Flagmaker - ein Programmier-Blog |