Varaint

MAN

Erfahrenes Mitglied
[C/C++] Variant (flexibler) Datentyp

Hallo,

gibt es in C (C++) einen "flexiblen" Datentypen (so wie in VB: "variant"), der alle Datentypen annehmen kann?

Also Beispiel:

Code:
bool IsBoolValue( variant Value )
{
	if( IsBoolean( Value ) )
	{	
		return true;
	}

	return false;
}
Gibt es so etwas?

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

MAN
 
Zuletzt bearbeitet:
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!
 
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

MAN
 
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ß Homer
 
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 :p

Manchmal denken wir einfach zu scharf nach, um auf die einfachste Lösung zu kommen! ;)

Vielen Dank!


mfG

MAN
 
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
 
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ß Homer
 
Zurück