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";
    

    😉


Anmelden zum Antworten