Ich verwende eine Vorlage Funktion searchByCriteria<T>
, wo ich möchte die Funktion mit einem string
und einem double
ausführen können. Ich habe eine Liste von benutzerdefinierten Objekten mit den Attributen string
und double
, und ich möchte diese Funktion verwenden, um den Kriterienwert (welcher Art auch immer, vom Benutzer eingegeben) zu überprüfen, um Übereinstimmungen in dem Objekt zu überprüfen Attribute des gleichen Typs.C++ - Cast Vorlage-Objekt zu bestimmten Datentypen
I.e. Der Benutzer gibt einen doppelten Wert ein und überprüft die Objektsammlung auf übereinstimmende doppelte Werte. Der Benutzer gibt einen Zeichenfolgenwert ein und überprüft die Objektauflistung auf übereinstimmende Zeichenfolgenwerte.
Das Problem, das ich habe, ist, sobald der Wert eingegeben wird, wird es an eine andere Vorlage-Funktion übergeben, um mit den Elementen in der Liste überprüft werden. Und an diesem Punkt muss das Objekt T
, das als Parameter übergeben wird, entweder in ein Double oder in eine Zeichenfolge konvertiert werden, um Übereinstimmungen überprüfen zu können. Hier
ist der Code für diesen Teil:
Wie Sie sehen können, der Parameterwert criteria
wieder in einen bestimmten Datentyp vor der while-Schleife konvertiert werden muss eingegeben werden für die Spiele zu überprüfen. Ich bin bei einem leichten Verlust darüber, wie dies zu tun ist, da mir keine Casting-Methoden in C++ bekannt sind, die in dieser Situation nützlich wären.
Das einzige, was ich denken kann, wäre so etwas wie:
try
{
//example method
convertToDouble(criteria);
}
catch (SomeKindOfNumberException ex)
{
//cannot be a double
//so must be string
convertToString(criteria);
}
Jede Hilfe wird sehr geschätzt.
Danke, Mark
Hallo, vielen Dank dafür. Wenn ich in Ihrem Beispiel diese Funktionen verwenden möchte, um ihre jeweiligen int/double/T-Werte zurückzugeben und diese in einer Variablen zu speichern, wie könnte ich das tun? – marcuthh
@marcuthh: Ich habe gerade das – purpletentacle
aufgenommen Dies hat perfekt funktioniert. Vielen Dank für Ihre Zeit! – marcuthh