-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Ringpuffer - const #1
base: master
Are you sure you want to change the base?
Conversation
Ich erinnere nochmal an Roberts Zusammenfassung von Vor diesem Hintergrund: Du machst die Garantie, mit So, jetzt der schwierige Teil: Wo setzt du Üblicherweise hat man bei |
Okay, ich war mir da auch ziemlich unsicher, ob die Verschiebung des Pointers (der ja erst beim nächsten Aufruf sinnvoll wird) auch zu den "sichtbaren Veränderungen" gehört - aber im aktuellen Commit hab ich das mal rausgenommen. In der Funktion element sollte es aber hinkommen, da veränder ich ja keine Pointer, sondern gebe nur ein beliebiges Element aus, oder? |
Korrekt. Der nach außen hin sichtbare Zustand ändert sich nicht. Ein anderes Beispiel: Wenn man die Fibo-LUT so programmiert hat, dass sie die Werte auf Anfrage berechnet und dann zwischenspeichert, kann die Berechnungs-Funktion durchaus |
Der Pointer ist von außen gar nicht sichtbar, er ist ja ein private member. Allerdings gehört zum beobachtbaren Verhalten einer Instanz der Klasse der Rückgabewert von Beispiel: double return2nd(Ringpuffer const& p)
{
return p.element(2);
}
int main()
{
Ringpuffer m = {5}; // C++03: Ringpuffer m(5);
m.push(4.2); m.push(2.1);
std::cout << return2nd(m);
// ich erwarte, dass sich an dieser Stelle m genauso verhält
// (soweit ich das beobachten kann)
// wie vor dem Funktionsaufruf!
std::cout << m.pop();
// ich erwarte _nicht_, dass m sich geändert hat
// vielmehr erwarte ich sogar, _dass_ es sich geändert hat
} |
Hi,
hier noch der Ringpuffer, den ich mal versucht habe, bei dem ich ein paar Methoden const gemacht habe. Bin mir allerdings nicht ganz sicher, ob es vernünftig ist, die Funktionen, die den Pointer verschieben const zu machen, da ich diesen ja dann mutable machen musste.
Thomas