Problem mit Lesen/abspeichern(?) von Literalen
-
Abend erstmal,
ich plane, einen Datentyp zu erstellen, der Fließkommazahlen mit einer Genauigkeit von 50 Stellen unterstützt.
(Ich weis, das gibt es schon alles...es dient mir aber nur zur Übung.)Dazu hab ich folgende Klasse erstellt:(stark reduziert, um das Problem zu zeigen)
class hiprec { private: string hiprec_zahl; public: string h(); //außerhalb programmiert(unwichtig) //Operatormethoden void operator=(string I) { hiprec_zahl = I; } //Konstruktoren u. Destruktoren hiprec() { hiprec_zahl = "0";} };hier meine main() Funktion:
int main() { hiprec h; h = 1234567890123456789012; //hier ist das Problem! cout <<h.h(); return 0; }Innerhalb der Klassendefinition hab ich eine Operatormethode erstellt, damit die Werte auch korrekt eingelesen werden. Das klappt auch wunderbar(natürlich, muss ich den Parameter jedesmal ändern->Überladung), solange ich die Wertebereiche der elementaren Datentypen nicht über-/unterschreite.
Da ich keine andere Möglichkeit sehe diesen Datentyp zu erstellen ohne einen string, in dem die Zahl gespeichert wird, steh ich vor dem Problem, dass Literale nur mit Anführungszeichen eingelesen werden können.
Zeile 4 in der main() Funktion wäre folglich nur so korrekt:h = "1234567890123456789012";Meine Frage ist nun, gibt es eine Möglichkeit, dafür zu sorgen, dass auch obige Initialisierung möglich ist?
h = 1234567890123456789012;Welchen Datentyp soll ich als Parameter festlegen?
Geht das überhaupt?Ich hab keine Idee
Vielen Dank schonmal für antworten
-
Hallo
Nein das geht nicht. Denn alle Werte die nicht in Hochkommas stehen werden impliziet erstmal in int umgewandelt bevor sie weiter verarbeitet werden.
bis bald
akari
-
das geht noch nicht. möglicherweise dann mit C++0x, aber das steht noch in den sternen.
-
Also hab ich keine Andere Möglichkeit, als die Initialisierung bzw. Zuweisungen von Literalen, wenn sie die Standart-Datentypen überschreiten, in Anführungszeichen einzugeben?
-
Hallo
Nein es gibt keine andere Möglichkeit außer Literale.
bis bald
akari
-
Ok, vielen Dank
Dann mach ich die Initialisierung eben auf folgende Weise:[Mein Datentyp] variablenbezeichner = "12345678277374";