reference const_reference L-value R-value
-
Hallo zusammen,
ich mal wieder mit einer Frage über guten Stil,
ich hatte aus vorgegebenen Code ein Struct wie folgt
template <int dim> struct PointHistory { SymmetricTensor<2,dim> old_stress; };daraus aber eine simple Klasse gemacht mit getter und setter.
Nun gibt es aber eine Stelle im Code, die sah mit struct so aus.
local_quadrature_points_history->at(q).old_stress = rotated_new_stress;Mit der neuen PointHistory-Klasse sieht die so aus:
local_quadrature_points_history.at(q).setOldStress( rotated_new_stress );Dann meckert aber der Compiler
/home/users/guptar5t/ARES/ARES_DE_MOD/ARESv0.04/source/main.cpp(1831): error: the object has cv-qualifiers that are not compatible with the member function object type is: const ares::PointHistory<2> local_quadrature_points_history.at(q).setOldStress( rotated_new_stress );Ich verstehe das so, dass "local_quadrature_points_history" kein L-value mehr ist und deswegen mit at eine konstante Referenz auf das PointHistory-Objekt zurückgegeben wird.
Ich habe nun allerdings keine Idee, wie ich das ganze besonders sauber lösen soll. Ich hab daran gedacht eine Referenzrückgabe von oldStress für PointHistory
hinzuzufügen, weiß aber nicht, ob das sauber ist.
Gibt es bessere Vorschläge?Danke
Rahul
-
Ok, Entwarnung der Compilerfehler hatte nichts mit den Begriffen aus dem Titel
zu tun, sondern ich Idiot habe
local_quadrature_points_history
vorher const deklariert gehabt und es voll nicht gecheckt.Also keine Mühe mehr machen, das hier noch zu lesen oder sonstwie zu verstehen.