000
01.11.2008, 21:13 Uhr
~DerHugo
Gast
|
Hallo Leute
ich möchte euch eine Frage stellen zu einem Problem auf das ich nun schon ein paarmal gestoßen bin. Es geht darum, von zwei eigenen Klassen die eine als Member der anderen zu verwenden, sie aber erst im fremden Konstruktor zu konstruieren. Als Veranschaulichung ein Minimalbeispiel:
C++: |
struct A { A() {} A(int size) { field = new int [size]; } ~A() { delete [] field; } int * field; };
struct B { B(int size) { // allocate a's field here, with size 'size' } A a; };
int main() { B b(10); return 0; }
|
Ich möchte also nun b.a konstruieren abhängig vom c'tor-Parameter von B, d.h. b.a.field eine Grösse von 10 geben. Man könnte natürlich einfach eine init-Methode (oder den operator() oder irgendwas von der Art) in A implementieren, die anstelle des c'tors den Job erledigt, und der im c'tor von B aufgerufen wird, aber das will ich nicht, denn A wird auch in einem anderen Kontext verwendet, wo nur der Konstruktor A's Speicher allozieren können soll. Wie also kann ich B entscheiden lassen, wie viel Speicher für A.field alloziert werden soll?
Vielen Dank für eure Hilfe!
DerHugo |