看板 EE_DSnP 關於我們 聯絡資訊
============解答已出爐============ 因為dlist.h最後少加一大括號 導致整個definition 錯位 在adtTest.cpp就會有定義錯誤的問題... =========解答完畢之我蠢了========= compiling 是件刺激的事情 尤其是你不知道bug會從四面八方何處猛然冒出捅人 怎麼死的都不知道... - 剛剛雀躍地想試試看compile 結果就出現一長串的錯誤: compiling: adtTest.cpp In file included from adtTest.cpp:10:0: adtTest.h:75:65: warning: friend declaration ‘std::ostream& operator<<(std::ostream&, const DList<T>::AdtTestObj&)’ declares a non-template function adtTest.h:75:65: note: (if this is not what you intended, make sure the function template has already been declared and add <> after the function name here) adtTest.h:120:4: error: need ‘typename’ before ‘ DList<DList<T>::AdtTestObj>::iterator’ because ‘DList<DList<T>::AdtTestObj> ’ is a dependent scope adtTest.h:154:52: error: ‘DList<DList::AdtTestObj>::iterator’ is not a type adtTest.cpp:16:27: error: type ‘DList<T>::AdtTestObj’ is not derived from type ‘DList<T>’ adtTest.cpp:35:24: error: cannot define member function ‘ DList<T>::AdtTestObj::AdtTestObj’ within ‘DList<T>’ adtTest.cpp:42:55: error: ‘std::ostream& DList<T>::operator<<(std::ostream&, const DList<T>::AdtTestObj&)’ must take exactly one argument adtTest.cpp:51:39: error: cannot define member function ‘ DList<T>::AdtResetCmd::exec’ within ‘DList<T>’ adtTest.cpp:65:33: error: cannot define member function ‘ DList<T>::AdtResetCmd::usage’ within ‘DList<T>’ adtTest.cpp:71:21: error: cannot define member function ‘ DList<T>::AdtResetCmd::help’ within ‘DList<T>’ adtTest.cpp:81:37: error: cannot define member function ‘ DList<T>::AdtAddCmd::exec’ within ‘DList<T>’ adtTest.cpp:110:31: error: cannot define member function ‘ DList<T>::AdtAddCmd::usage’ within ‘DList<T>’ adtTest.cpp:116:19: error: cannot define member function ‘ DList<T>::AdtAddCmd::help’ within ‘DList<T>’ adtTest.cpp:127:40: error: cannot define member function ‘ DList<T>::AdtDeleteCmd::exec’ within ‘DList<T>’ adtTest.cpp:175:34: error: cannot define member function ‘ DList<T>::AdtDeleteCmd::usage’ within ‘DList<T>’ adtTest.cpp:182:22: error: cannot define member function ‘ DList<T>::AdtDeleteCmd::help’ within ‘DList<T>’ adtTest.cpp:192:39: error: cannot define member function ‘ DList<T>::AdtPrintCmd::exec’ within ‘DList<T>’ adtTest.cpp:218:33: error: cannot define member function ‘ DList<T>::AdtPrintCmd::usage’ within ‘DList<T>’ adtTest.cpp:224:21: error: cannot define member function ‘ DList<T>::AdtPrintCmd::help’ within ‘DList<T>’ adtTest.cpp:227:1: error: expected ‘}’ at end of input In file included from adtTest.cpp:10:0: adtTest.h: In member function ‘void DList<T>::AdtTest::deleteRandom(size_t)’ : adtTest.h:100:41: error: there are no arguments to ‘getPos’ that depend on a template parameter, so a declaration of ‘getPos’ must be available adtTest.h:100:41: note: (if you use ‘-fpermissive’, G++ will accept your code, but allowing the use of an undeclared name is deprecated) adtTest.h: In member function ‘void DList<T>::AdtTest::printForward()’: adtTest.h:135:7: error: need ‘typename’ before ‘ DList<DList<T>::AdtTestObj>::iterator’ because ‘DList<DList<T>::AdtTestObj> ’ is a dependent scope adtTest.h:135:37: error: expected ‘;’ before ‘li’ adtTest.h:136:14: error: ‘li’ was not declared in this scope adtTest.h: In member function ‘void DList<T>::AdtTest::printBackward()’: adtTest.h:143:7: error: need ‘typename’ before ‘ DList<DList<T>::AdtTestObj>::iterator’ because ‘DList<DList<T>::AdtTestObj> ’ is a dependent scope adtTest.h:143:37: error: expected ‘;’ before ‘li’ adtTest.h:143:62: error: ‘li’ was not declared in this scope adtTest.h: In member function ‘void DList<T>::AdtTest::printData(size_t, int, size_t)’: adtTest.h:156:36: error: invalid type argument of unary ‘*’ adtTest.cpp: At global scope: adtTest.cpp:30:1: error: expected unqualified-id at end of input - 雖然很挫志, 但是面臨bug不de怎能說修過DSnP(?) 但就在此時我赫然發現... ... adtTest.cpp我壓根兒沒動過啊... ... 哪呢!? 據說作業的所有問題都可以靠make clean->make 32解決 沒變 據說我有可能在參考implementation時動到 重新解壓縮! 沒變... 連error message都給我難兄難弟般的一模一樣 Q _ Q 這... 難道我在某個地方做了蠢事!? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.4.191
shryuhuai:'DList<DList::AdtTestObj>::iterator’ is not a type 11/26 15:41
shryuhuai:我猜是定義iterator的scope漏了}或; 11/26 15:44
simpdanny:檢查了...不是,這樣如此應該是compile dlist.h錯誤吧? 11/26 16:01
djshen:所以還沒找到錯喔@@ 11/26 16:04
simpdanny:對啊... 11/26 16:04
djshen:看起來的確像是哪裡忘了加}.. 11/26 16:08
shryuhuai:會不會是iteerator的scope結尾沒有加; 11/26 16:12
simpdanny:djshen(大鈞神)是對的!=..=謝謝>"< 11/26 16:34
※ 編輯: simpdanny 來自: 140.112.4.191 (11/26 16:37)
simpdanny:謝謝你們幫忙Q^Q 11/26 16:38
djshen:.. 11/26 16:53