作者BBSealion (海獅)
看板EE_DSnP
標題[問題] 在myString.cpp中定義function
時間Wed Jan 5 22:45:43 2011
請問我可以在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)
1F:推 ric2k1:Function 定義的先後順序有差!! 同一個檔案裡上面的 01/06 02:19
2F:→ ric2k1:funtion 如果要使用下面的 function, 你要在上面 function 01/06 02:20
3F:→ ric2k1:的前面宣告下面那個 function 的 prototype 01/06 02:20
4F:→ ric2k1:像是 size_t myStrGetTok(const string&, string&, ...) 01/06 02:21
5F:推 ric2k1:不過請注意!! 如果你在上面 function prototype define 了 01/06 02:21
6F:→ ric2k1:default argument, 如 (size_t pos = 0), 下面 function 在 01/06 02:22
7F:→ ric2k1:定義的時候就不可以在宣告一次 default argument, 01/06 02:22
8F:→ ric2k1:也就是說要: ... size_t pos, const char del) 01/06 02:23
9F:→ ric2k1:你可以試試看把 default argument 兩邊都加上去看看, 01/06 02:23
10F:→ ric2k1:保證你看不懂 error message 在寫甚麼XD 01/06 02:24
11F:→ BBSealion:哎呀... 竟然是這們蠢的錯誤XDD 太久沒自己定義global 01/06 10:04
12F:→ BBSealion:的function 了XDD 01/06 10:04
13F:推 ric2k1:XD That happens! 01/06 11:54