劍指offer55 字符流中第一個不重復的字符(最典型錯誤)
阿新 • • 發佈:2017-07-27
string 對象 exp 構造函數 error: sig off sign ==
典型並且基礎的錯誤:
class Solution { public: //Insert one char from stringstream void Insert(char ch) { if(result[ch] == -1) result[ch] = index; else if(result[ch] >= 0) result[ch] = -2; index++; } //return the first appearence once char in current stringstreamchar FirstAppearingOnce() { char ch = ‘\0‘; int minindex = 999; for(int i = 0;i < 256;i++){ if(result[i] >= 0){ if(result[i] < minindex){ minindex = result[i]; ch = (char)i; } } }return ch; } int result[256]; for(int i = 0;i < 256;i++) result[i] = -1; int index = 0; };
錯誤顯示:
編譯錯誤:您提交的代碼無法完成編譯 In file included from a.cc:2: ./solution.h:29:5: error: expected member name or ‘;‘ after declaration specifiers for(int i = 0;i < 256;i++) ^~~ a.cc:13:19: warning: comparison of integers of different signs: ‘int‘ and ‘size_t‘ (aka ‘unsigned long‘) [-Wsign-compare] for(int i = 0;i < strlen(str);i++) { ~ ^ ~~~~~~~~~~~ 1 warning and 1 error generated.
c++的類中只能有屬性和方法(也可以說函數)。
方法就是你定義的類中的那些實現函數,屬性相當於類中的那些參數。
上面代碼中報錯的for循環,目的是對result數組進行初始化,但這個for循環不是一個函數,在類裏面是不允許這種執行語句的,必須轉換成函數才行。因為result本身是這個class類的屬性,所以對result的初始化,其實相當於對類屬性的初始化,可以通過構造函數來實現。
構造函數本身就是實現初始化類對象的數據成員。
劍指offer55 字符流中第一個不重復的字符(最典型錯誤)