[Dune] Vec --> FieldVector

Oliver Sander sander at math.fu-berlin.de
Mon Oct 18 11:44:54 CEST 2004



>> 5) In FieldVector gibt es gleichzeitig
>>      operator=(const K& p)
>>    und
>>      operator K ()
>>    Das ist hochgefährlich, denn man kann damit
>>      FieldVector<Foo, 3> a, b, c;
>>      a = b - c;
>>    schreiben, und der Compiler schluckt es.  Beim Ausführen
>>    wird dann aber NUR DIE ERSTE KOMPONENTE subtrahiert!!!
>>    Mysteriöse Fehler sind vorprogrammiert.  Ich habe
>>    deswegen noch operator- und operator+ dazugebaut.
> Die Operatoren operator+ etc wollte ich eigentlich nicht haben. Ich würde 
> eher den operator K weglassen. Das war nur ein Testballon um zu erreichen, 
> dass man im skalaren Fall nicht immer x[0] schreiben muss. Das habe ich jetzt 
> aber anders gelöst.
>

Um mal eine uralte Diskussion wieder anzufangen:  Ich bin der Meinung, daß
operator+ und operator- ruhig drinbleiben sollten.  Denn manchmal kommt
man um eine temporäre Variable sowieso nicht herum (z.B. wenn man die
Differenz zwischen zwei const FieldVector& ausrechnen will), und dann ist es
schon netter, wenn man a = b - c; schreiben kann.  Und wem die aller-
höchste Höchstgeschwindigkeit so wichtig ist, der sollte auch so gut
informiert sein, um zu wissen, daß operator- langsam ist, und man nach
Möglichkeit was anderes nehmen sollte.

Grüße,
Oliver


More information about the Dune mailing list