ERLEDIGT
NEIN
NEIN
ANTWORTEN
8
8
ZUGRIFFE
468
468
EMPFEHLEN
-
Hallo,
gibt es in C (C++) einen "flexiblen" Datentypen (so wie in VB: "variant"), der alle Datentypen annehmen kann?
Also Beispiel:
Gibt es so etwas?Code :1 2 3 4 5 6 7 8 9
bool IsBoolValue( variant Value ) { if( IsBoolean( Value ) ) { return true; } return false; }
Und die nächste(n) Frage(n) wäre(n): Gibt es ein Methode, wie "IsBoolean" (bzw. IsString, IsNumeric,...), um herauszufinden, welcher Datentyp nun bei dieser Funktion übergeben wurde?
mfG
MANGeändert von MAN (25.05.04 um 10:55 Uhr)
BLT - Die Bundesliga Tabelle der Saison 2011 / 2012 - http://www.spacehoster.de/blt/ NEU: mit Tippspiel!
EMail: mstangel@gmx.de
-
Hm, also den Datentyp Variant gibt es unter C++ auf jeden Fall auch, wie es mit Funktionen für die Datentyperkennung aussieht weiß ich nich, schau mal bei google!
Wenn euch mein Beitrag gefällt, meldet euch als Referal bei Dropbox an: http://db.tt/4tKC8O5
-
25.05.04 12:17 #3
- Registriert seit
- Jul 2003
- Ort
- Duisburg (NRW)
- Beiträge
- 1.788
In die Sprache eingebaut ist union . Das unterstützt allerdings keine Typerkennung. Ich empfehle boost::any aus der Boost-Library .
Chor: "Wir sind der Chor, und wir stimmen zu. Wir stimmen zu, wir stimmen zu, wir stimmen zu."
-
Oder man bastelt sich selbst einen. Hab ich mal gemacht, bis ich festgestellt habe, dass so einen Datentyp die Welt nicht braucht.
Wozu brauchst du denn variant?
-
Um eine Funktion die ich grad schreib sehr flexibel zu machen:
man übergibt ihr entweder einen String, Bool oder Integer-Wert, was dann per WritePrivateProfileString(...) automatisch in eine INI-Datei geschrieben wird.
Alternative wären zwei, drei Methoden zu schreiben - das wollt ich umgehen.
Klar, man könnte vor jedem Aufruf von WritePrivateProfileString noch ein sprintf(...) oder sonstiges machen, aber das wollt ich alles in einer Methode haben.
Vielleicht wäre es doch einfacher, diese 3 Methoden zu schreiben...
Trotzdem, vielen vielen Dank für die Tipps! !
mfG
MANBLT - Die Bundesliga Tabelle der Saison 2011 / 2012 - http://www.spacehoster.de/blt/ NEU: mit Tippspiel!
EMail: mstangel@gmx.de
-
25.05.04 19:03 #6
- Registriert seit
- Jan 2002
- Ort
- Bayern
- Beiträge
- 1.390
Was programmierts du? C oder C++?
Wenn C++ warum dann nicht Funktionen überladen?
void MyFunc(int)
void MyFunc(const char*)
void MyFunc(double)
usw..
Und dann je nachdem verarbeiten.
Man kann sich das aber auch verkomplizieren und mit void-Zeigern rumspielen oder sich selbst einen Variant-Datentyp bauen und wild "umhercasten".
Gruß Homerwe would change the world if god gave us the source code...
and remember, science is nothing more than reverse engineering nature...
Current projects:
- LdrawConverter
-
Stimmt! Auf die einfachste Lösung bin ich gar nicht gekommen - überladen!
So wäre es genau richtig: immer der gleichen Methode (den Methoden) kann irgendein Datentyp übergeben werden, die Methode sucht sich jedoch selbst aus, wie sie den Wert verarbeitet - perfekt
Manchmal denken wir einfach zu scharf nach, um auf die einfachste Lösung zu kommen!
Vielen Dank!
mfG
MANBLT - Die Bundesliga Tabelle der Saison 2011 / 2012 - http://www.spacehoster.de/blt/ NEU: mit Tippspiel!
EMail: mstangel@gmx.de
-
27.05.04 00:45 #8
- Registriert seit
- Apr 2004
- Ort
- Villingen-Schwenningen
- Beiträge
- 34
Um Programmier- und Eingabeaufwand zu sparen kann man auch überlegen das als Template zu entwerfen und mit dem C++ Schlüsselwort "typeid", den Typ zur Laufzeit ermitteln und entsprechend reagieren.
MfG Byteblaster
-
27.05.04 00:58 #9
- Registriert seit
- Jan 2002
- Ort
- Bayern
- Beiträge
- 1.390
Bingo das wäre Möglichkeit 3.
Wir sehen C++ ist so vielseitig
Wobei das natürlich auch auf den Umfang ankommt und Nicht jeder auf Anhieb mit Templates zurecht kommt.
Trotzdem eine flexible Möglichkeit.
Gruß Homerwe would change the world if god gave us the source code...
and remember, science is nothing more than reverse engineering nature...
Current projects:
- LdrawConverter





Zitieren
Login






