可能是另一個愚蠢的問題,這是我在壞的C++書籍中學習的結果(我打算糾正這個問題)。在模板函數中鍵入錯誤
我用sstream玩和嘗試了以下功能:
template <class num> num fromString(const std::string& str) {
std::istringstream ss(str);
num temp;
ss >> temp;
return temp;
}
當我把它想:
int i = fromString<int>("123");
它工作正常。但是,如果我把它想:
int i = fromString("123");
我得到了一個編譯錯誤:
error: no matching function for call to ‘fromString(std::string&)’
我以爲,編譯器會明白,如果我指定的值到int
話,我一定要談fromString<int>
,但似乎並非如此。
我錯過了什麼嗎?我是否應該總是指定模板化函數的類型?或者當模板類型是返回類型?或者當模板類型不能由輸入類型決定時?
humm ...邪惡!我現在明白了。謝謝。猜測我太習慣於Haskell,它純粹是功能性的,所以這種自動轉換是不可能的。 – 2010-12-09 21:02:02