這似乎很奇怪。我的代碼片段如下:雖然(file_object)造成無限循環
List(const char* fn) {
std::ifstream file(fn);
if (!file){
throw std::string("*** Failed to open file ") + std::string(fn) + std::string(" ***");
}
while (file) {
T e;
if (e.load(file)){
list.push_back(*new T(e));
}
}
}
與其他人,似乎在整個文件就好運行。但對我而言,我在我的機器上陷入了無限循環。
OS X - G ++ 4.2
我不知道,爲什麼有此功能的差異。
這裏是無限循環:由於文件是在一個有效的狀態下放置
while (file) {
T e;
if (e.load(file)){
list.push_back(*new T(e));
}
}
假設'e.load(file)'每次都會使文件處於有效狀態,當您希望它在文件末尾留下'eof'或其他一些條件時。我無法猜測它可能會做什麼。 – 2014-12-04 19:53:26
什麼是T'配對... – 2014-12-04 19:54:07
T是一個模板變量,很抱歉。是的,我會這樣認爲,但特別是在我的機器上失敗似乎很奇怪。 – Kris 2014-12-04 19:55:35