S
Hi 3 Bemerkungen von mir:
1.)
Bernd88 schrieb:
...da sich ein Objekt aus vielen kleinen Objekten zusammensetzt und diese sich zur Laufzeit ständig in ihrem Verhalten ändern können....
Dann ist das Objekt eben doch nicht konstant und die Schnittstelle stimmt nicht.
2.) Man kann Attribute mutable deklarieren. Das bedeutet dann "Ich kümmere mich selbst um die fachliche Konstanz". Das kann aber (absolut zu Recht) nur der Programmierer der Klasse.
Bernd88 schrieb:
..Ich habe folgenden getter gegeben, mit dem ich arbeiten muss und nicht modifizieren darf. ...
3.) Ich sehe nicht, inwieweit ein const_cast<> "erlaubter" sein soll als eine Veränderung der Schnittstelle.
Wenn man die Schnittstelle nicht verändern darf, dann entweder zu Übungszwecken oder weil Andere sich auf diese Schnittstelle verlassen - insbesonders die Implementierer von getContentMask() .
Insgesamt scheinst Du (absichtlich?mutwillig?) das Wesentliche der Antworten auszublenden:
Phoemuex schrieb:
...
Im schlimmsten Fall könntest du auf const_cast zurückgreifen, davor würde ich aber alle anderen Möglichkeiten ausschließen, ...
Bashar schrieb:
...
Wenn du trotzdem unbedingt das const weghaben willst, kannst du es wegcasten:
...
Dann kann es aber gut sein, dass dir das Programm um die Ohren fliegt oder du wegen groben Unfugs die Kündigung bekommst.
Schonmal überlegt, was passiert, wenn getContentMask() z.B. einen Zeiger auf ein Literal zurückgibt (ist ja OK, weil const&)? Vielleicht sogar erst in der nächsten Version?
Letztlich steht es Dir natürlich frei, zu tun, was Du willst ... ich persönlich würde aber nicht nur Experten fragen, sondern mir auch ihre Antworten anhören.
Gruß,
Simon2.