看板 EE_DSnP 關於我們 聯絡資訊
請問我可以在myString中定義新的function用嗎? 為什麼會出現奇怪的compile error呢orz 我定義了一個自己的function叫做mylexOptions void mylexOptions(const string& option, vector<string>& tokens) { string token; size_t n = myStrGetTok(option, token); while (token.size()) { tokens.push_back(token); n = myStrGetTok(option, token, n); } } 在其他地方都還沒有使用他之前,我先直接compile 卻出現error messager : --- > compiling: myString.cpp myString.cpp: In function ‘void mylexOptions(const std::string&, std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)’: myString.cpp:29: error: ‘myStrGetTok’ was not declared in this scope make[1]: *** [myString.o] Error 1 --- 請問前面這堆這是什麼意思呢? 另外myStrGetTok 不是就是定義在同個file底下了嗎? 為什麼會跟我complain沒定義呢? --- PS:順便附上myStrGetTok的code size_t myStrGetTok(const string& str, string& tok, size_t pos = 0, const char del = ' ') { size_t begin = str.find_first_not_of(del, pos); if (begin == string::npos) { tok = ""; return begin; } size_t end = str.find_first_of(del, begin); tok = str.substr(begin, end - begin); return end; } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.168.232.34 ※ 編輯: BBSealion 來自: 218.168.232.34 (01/05 22:46) ※ 編輯: BBSealion 來自: 218.168.232.34 (01/05 22:48)
ric2k1:Function 定義的先後順序有差!! 同一個檔案裡上面的 01/06 02:19
ric2k1:funtion 如果要使用下面的 function, 你要在上面 function 01/06 02:20
ric2k1:的前面宣告下面那個 function 的 prototype 01/06 02:20
ric2k1:像是 size_t myStrGetTok(const string&, string&, ...) 01/06 02:21
ric2k1:不過請注意!! 如果你在上面 function prototype define 了 01/06 02:21
ric2k1:default argument, 如 (size_t pos = 0), 下面 function 在 01/06 02:22
ric2k1:定義的時候就不可以在宣告一次 default argument, 01/06 02:22
ric2k1:也就是說要: ... size_t pos, const char del) 01/06 02:23
ric2k1:你可以試試看把 default argument 兩邊都加上去看看, 01/06 02:23
ric2k1:保證你看不懂 error message 在寫甚麼XD 01/06 02:24
BBSealion:哎呀... 竟然是這們蠢的錯誤XDD 太久沒自己定義global 01/06 10:04
BBSealion:的function 了XDD 01/06 10:04
ric2k1:XD That happens! 01/06 11:54