Wahrscheinlich eine andere dumme Frage, die aus meinem Studium in schlechten C++ Buch resultiert (ich beabsichtige, dies zu korrigieren).Typ Fehler in einer Vorlage-Funktion
Ich war mit sstream spielen und versucht, die folgende Funktion:
template <class num> num fromString(const std::string& str) {
std::istringstream ss(str);
num temp;
ss >> temp;
return temp;
}
Als ich es nennen mag:
int i = fromString<int>("123");
es ok funktioniert. Aber wenn ich es nennen mag:
int i = fromString("123");
ich einen Übersetzungsfehler bekam:
error: no matching function for call to ‘fromString(std::string&)’
dachte ich, der Compiler würde verstehen, dass, wenn ich den Wert auf eine int
Zuweisung dann muss ich reden fromString<int>
, aber es scheint, dass es nicht der Fall ist.
Fehle ich etwas? Soll ich immer den Typ einer Vorlagenfunktion angeben? Oder nur, wenn der Vorlagentyp der Rückgabetyp ist? Oder nur, wenn der Schablonentyp nicht durch die Arten der Eingaben bestimmt werden kann?
humm ... Wicked! Ich hab es jetzt. Vielen Dank. Schätze, ich bin zu sehr an Haskell gewöhnt, was rein funktional ist und daher ist diese Art der automatischen Konvertierung nicht möglich. –
Heh, verwöhnt von C++. Das habe ich noch nie gehört. :) –