Int- oder Char-Array auf bestimmte Zeichen beschränken
-
Hallo liebe Forengemeinde,
ich bin seit einem viertel Jahr am cpp lernen und versuche mich derzeit an Klassen und Operatorenüberladung.Leider bin ich auf ein Problem gestossen, dass ich ohne Fremdhilfe (Google war nix) nicht schaffe:
Ich habe ein Array als Element einer Klasse, auf diesen Array wird von außen per Indexoperator zugegriffen. Kann ich verhindern, dass ich z.B. im Int-Array andere Werte als 0, 1 und 2 habe?
Also:
zahl[1]=3; --> Fehler, stattdessen wird zahl[0] auf 0 gesetzt?
-
Du solltest zuersteinmal keinen public-Zugriff auf interne Arrays geben, sondern stattdessen für die Klasse den operator [] überladen.
Aber dann darfst du nicht einfach nur einen int* zurückgeben, sondern du mußt dir ein Proxy-Objekt erzeugen, welches dann einen überladenen Zuweisungsoperator "void operator=(int)" hat, in dem du dann die Überprüfung durchführst.
Beispiele für Proxy-Klassen sollte es hier im Forum genügend geben...
-
Ist nicht public freigegeben, sondern läuft bereits über einen überladenen Indexoperator.
Danke für den Ansatz.
-
Du kannst dein int durch eine eigene klasse ersetzen, die nur 0 1 und 2 akzeptiert, bei char das gleiche.
-
Krux schrieb:
Du kannst dein int durch eine eigene klasse ersetzen, die nur 0 1 und 2 akzeptiert, bei char das gleiche.
Genau das hatte ich ja vor zu basteln. In dieser Klasse sollte nun aber verhindert werden, dass der Indexoperator was anderes schreibt als 0, 1 und 2.
Abgekupfert habe ich dann hier:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-147094-and-highlight-is-proxy+container.htmlIst dank .filmor jetzt auch gelöst.