zurückzugeben Ich möchte eine Funktion schreiben, die mir String
, Int
, Float
basierend auf einigen Kriterien zurückgeben würde. Mit C11. Versuchte paar Sachen bereits erwähnt, funktioniert nicht mit Vorlage/Auto. Wenn die Funktion nur eine Rückgabe hat, ist sie im Moment in Ordnung. Wenn ich eine weitere Return-Say-Zeichenfolge hinzufüge, wird der Kompilierungsfehler angezeigt. Fehler: ungültige Umwandlung von int
zu char*
Funktion, um verschiedene Typen basierend auf Eingabe
template<typename T>
T getProperty(int field,Json::Value root)
{
for(int i =0;i < root["properties"].size(); i++)
{
if(root["properties"][i]["field"].asInt() == field)
{
if(strcmp(root["properties"][i]["type"].asString().c_str(),"int") == 0)
{
T convertedValue = (root["properties"][i]["currVal"].asInt());
return convertedValue;
}
if(strcmp(root["properties"][i]["type"].asString().c_str(),"string") == 0)
{
T convertedValue;
sprintf(convertedValue,"%s",root["properties"][i]["currVal"].asString().c_str());
return convertedValue;
}
}
}
}
'T' muss zur Kompilierzeit bekannt sein, von den Informationen in der Signatur der Funktion und seiner Aufrufstelle allein. Und es kann immer nur eine Art sein. – Quentin
Zustimmen, Aufruf an diese Funktion ist wie folgt int l = getProperty (1, root); Char-Name [50]; sprintf (Name, "% s", getProperty (2, Wurzel)); –
sach
Oh ja, wie du sagtest, ist die Vorlage Kompilierzeit Sachen. Das würde nicht funktionieren – sach