Datentyp zur Laufzeit ermitteln
-
Ich habe folgende Funktion basierend auf templates, die immer den maximalen Typ zum aktuell verwendeten Datentyp nutzen soll:
template <class T> inline T minArrayValue(T * Array, int iArraySize) { T min = std::numeric_limits<double>::max(); for (int i=0; i < iArraySize; i++) { min = minValue(min, Array[i]); } return min; }nur wie ermittle ich zur Laufzeit den Datentyp?
-
Google mal nach "type_info" und "Run time Type Information"
-
pospiech schrieb:
nur wie ermittle ich zur Laufzeit den Datentyp?
template< class T > void wer_bin_ich_questionmark( T &X ) { string str = "Ich bin"; if ( typeid( X ) == typeid( double ) ) { str += " double.\n"; } if ( typeid( X ) == typeid ( char ) ) { str += " char.\n"; } if ( typeid( X ) == typeid ( string ) ) { str += " string.\n"; } cout << str; } int main() { double d; char c; string s; wer_bin_ich_questionmark( d ); wer_bin_ich_questionmark( c ); wer_bin_ich_questionmark( s ); return 0; }
-
bist du sicher, dass du das erst zur laufzeit wissen musst?
pospiech schrieb:
Ich habe folgende Funktion basierend auf templates, die immer den maximalen Typ zum aktuell verwendeten Datentyp nutzen soll:
was ist ein maximaler typ?
T min = std::numeric_limits<double>::max();sowas wäre besser:
T min = std::numeric_limits<T>::max();oder verwende statt deiner funktion gleich
std::min_element.@proggingmania: genau so etwas will man doch mit templates vermeiden...
-
-
Man braucht aber auch gar nicht den maximalen Wert für den Typ. Nimm als Anfangswert für min einfach das erste Array-Element (für size>0).
