modifizierter zugriff
-
hi
ist es in c++ durch irgend einen trick möglich folgendes zu machen?
class storage { float value //was kommt jetzt? }; storage speicher; speicher.val() = 6; //intern ist es jetzt aber 12 (wegen modifikator) speicher.val() *= 2.5; //intern ist es jetzt aber 30ich hab es bisher mit gettern und settern gemacht aber die haben eine schreckliche syntax.
mfg
-
class modable_float { float value; float mod; public: explicit modable_float(float mod = 1.f): mod(mod) {} modable_float& operator=(float rhs) { value = rhs * mod; return *this; } operator float&() { return value; } }; #include<iostream> int main() { modable_float foo(2); foo = 6; foo *= 2.5; std::cout << foo << std::endl; }Begeistert bin ich davon nicht. Darf ich gegenfragen, wozu das gut sein soll?
-
Hach!
Sowas wollte ich auch grad' schreiben.
Deine Version ist aber deutlich schöner.
-
vielen dank für die lösung. wegen deiner frage: ich schreibe eine temperatur-klasse auf die man natürlich über mehrere einheiten zugreifen kann.
mfg
-
modifikator schrieb:
vielen dank für die lösung. wegen deiner frage: ich schreibe eine temperatur-klasse auf die man natürlich über mehrere einheiten zugreifen kann.
mfg
Ich weiß nicht, ob mir diese Lösung gefällt. Das was ich hingeschrieben habe ist nahe an der Grenze zu dem was ich einen Hack nennen würde. Für eine gut durchdesignte Klasse würde ich so etwas tendenziell eher nicht nehmen oder wenn dann nur mit ganz viel darüber nachdenken, ob das wirklich gut ist.
-
Ich habs zwar leider immer noch nicht geschafft es selber mal auszuprobieren, aber es gibt ja sowas tolles wie boost units.