006
03.07.2006, 14:49 Uhr
ao
(Operator)
|
Hi Stephan,
normalerweise macht man für sowas eine Lese- und eine Schreibroutine, aber keine Lese-Schreib-Routine, weil man nicht im gleichen Zugriff lesen *und* schreiben will.
Zitat: |
C++: |
int* get() throw (NotRunningException) { const Bar* This = this; return This->get(); // XXX }
|
Ist es garantiert, dass da die const-Variante gerufen wird oder kann eine Rekursion entstehen ? Geht es besser ?
|
Ich habs nicht ausprobiert, aber ich vermute, dass du in der Zeile XXX einen Compilerfehler kriegst, weil du versuchst, einen const int * (aus This->get ()) als nicht-const nach draußen zu reichen. Du müsstest zumindest zwischen return und This den const-Qualifier wegcasten, und das wird dann richtig dreckiger Code.
Dass hier ein Member-Pointer zum Schreibzugriff nach draußen gereicht wird, finde ich verdächtig. Damit vertraust du dem äußeren Code sozusagen deine Innereien an, und zwar nicht nur guckenderweise, sondern der darf da was dran ändern. Das ist für C++ zumindest ungewöhnlich.
ao |