[C++] 2 Fragen

Jellysheep

Erfahrenes Mitglied
Hi,
mal zwei Fragen:
1. Kann man in C++ verschiedene Objekte (int / string / char-array) unter einem Objekt zusammenfassen, etwa so:
Code:
Object o = 45;
o = "hello";

2. Gibt es eine Klasse, die Zahlen bzw. Rechnungen mit Zahlen groesser als int oder long ermoeglicht?
 
1. Grundsätzlich kannst du schon so eine Klasse entwickeln, welche eigentlich verschiedene Typen fassen kann.

2. Ja, es gibt zum Beispiel den Typ double der mindestens die doppelte Präzision des floats auf deiner Plattform hat. Oder für ganz grosse Sachen gibt es in openssl Funktionen für Bignumber.
 
Zur ersten Frage kann ich dir leider nichts sagen, ich weiss erlichgesagt auch nicht was du damit meinst.
Zu deiner zweiten Frage kann ich nur sagen dass du dir mal die Datentypen float und double anschaun solltest ;)
 
1. Kann man in C++ verschiedene Objekte (int / string / char-array) unter einem Objekt zusammenfassen, etwa so:
Code:
Object o = 45;
o = "hello";
Was willst du damit bezwecken? Du kannst ein struct erstellen, falls das das ist, was du willst:
C++:
struct {
  int i;
  std::string str;
} Object;

Object o;
o.i = 45;
o.str = "hello";

2. Gibt es eine Klasse, die Zahlen bzw. Rechnungen mit Zahlen groesser als int oder long ermoeglicht?
Ja, allerdings nicht in der Standardbibliothek. Einfach mal nach den Stichworten „bignum“, „big integer“, „arbitrary precision integer“ etc. suchen.

Grüße, Matthias
 
Hi in der Boost-Bibliothek gibt es die Datenstruktur boost::any, hier ein Beispiel ;)
Dann einfach ein std::vector mit dem Typ boost:any definieren und fertig ist dein untypisiertes Array.

mfg
 
@Mathias:
Ohne den ".i" oder ".str" Zugriff waere das cool...

@Online-Skater:
Genau so etwas meine ich! Dankeschoen! ;)

@devDevil:
Wie kann ich dann den Wert eines Objektes bekommen?
 
So, jetzt habe ich wieder Zeit für Antworten, ich hatte die letzen Tage nur Internet in Internetcafes zur Verfügung...

Ich habe eine BigInt Klase gefunden, die ist super! Danke für den Tipp!

Die boost::any Klasse ist nicht ganz so gut:
Code:
boost::any a = 5;
cout<<a;
und
Code:
boost::any a = 5;
int b = a;
geht z.B nicht...
Wie kann man solche Fälle lösen?
Die Ausgabe könnte man ja mit
Code:
operator= (ostream o, any a){...}
lösen... aber das wäre schwierig...
 

Neue Beiträge

Zurück