prüfen, ob Wert gesetzt wurde
-
Hallo,
ich möchte nach dem Einleisen einiger Daten prüfen, ob einige Attribute (sklare doubles) eines Objekts meiner Klasse mit Werten belegt wurden.
Meine Idee ist, die Attribute mit einem negativen Wert zu belegen, da die Datenwerte positiv sind, und dann zu testen, ob dieser negative Wert noch besteht.
Eine andere Möglichkeit wäre wohl, einen Vektor für nur ein Element anzulegen und zu testen, ob dieser Vektor leer ist.
Die Benutzung von Pointern und diese zu Beginn zu Nullpointern zu machen führt glaube ich dazu, dass ich noch extra Copy-Konstruktoren bräuchte für das Kopieren meiner Objekte.Gibt es eine elegantere oder bessere Art das Problem zu lösen?
-
Ein initialer Wert, falls Du nicht die gesamte Range des Datentyps auszunutzen brauchst, halte ich für gut.
Aber vielleicht Mal die Frage, wozu Du das benötigst. Vielleicht gibt es eine elegantere Möglichkeit, die allerdings mehr Informationen benötigt!
-
Am besten wäre natürlich, wenn die Einlese-Routine meldet, ob das Einlesen geklappt hat (das Objekt also gültige Werte hat) oder ob eben nicht. Die IO-Streams haben diese Möglichkeit. Bei dir müsste man natürlich wissen, wie du die Daten einliest.
-
Ich lese die Daten aus einer Textdatei ein. Dabei suche ich nach bestimmten Schlüsselwörtern und falls diese gefunden werden, so werden die dazugehörigen Funktionen aufgerufen und der Rest der zugehörigen Zeile an diese Funktion übergeben. Das ist vieleicht nicht elegant, aber einen Parser zu verwenden hätte sich wohl nicht gelohnt.
Die initializer-Werte sollte ich am Besten im Konstruktor setzen denke ich mal.
-
Schau dir doch mal boost::optional an.
Gruß
-
Wie sieht denn deine Datei genau aus? Sind die Daten, die du lesen möchtest, optional oder müssen sie vorhanden sein? Wie ist das Verhalten, wenn ein Datum erwartet wird, aber fehlt?
-
Das ist unterschiedlich. Manche Daten sind optional, manche von anderen abhängig.
Wenn bestimmte Daten Fehlen, muss mit einer Fehlermeldung, die besagt was fehlte, abgebrochen werden.