2013-10-22 43 views
0

在下面的代碼中,我有一個構造函數,它使用split_string函數初始化requests向量,該函數是一個工作函數。 我在構造函數體中使用了這個向量,但是如果我試圖用command line構造一個請求類,它會引發一個分段錯誤。在構造函數體中使用初始化列表中的字段

爲什麼這給我一個錯誤?哪裏不對?

class request { 
    vector<char*> requests; 

    public: 

    explicit request(char line[]): requests(split_string(line)) { 
     cout << "THIS LINE DOES NOT PRINT" << requests[1] << endl; 
    } 

這是split_string代碼:

vector<char*> split_string(char line[]) { 
    vector<char*> vec_str; 
    char* token; 
    token = strtok(line, " "); 

    while (token != NULL) { 
     vec_str.push_back(token); 
     token = strtok(NULL, " "); 
    } 
    for(int i = 0; i < vec_str.size(); ++i) { 
     std::cout << vec_str.at(i) << std::endl; 
    } 
} 
+0

'split_string()'是如何實現的? – timrau

+1

返回語句('return vec_str;')對該函數有奇效*。嘗試添加一個。 – WhozCraig

+0

Line []的典型輸入是「GET Google.html HTTP/1.0」 – user2418202

回答

2

有一個在split_string()沒有return聲明。因此,request::requests未被正確的vector<char*>初始化。

+0

「正確」,你的意思是「任何定義」 – WhozCraig

+0

哦。這是一個愚蠢的錯誤。我很抱歉愚蠢的問題。 – user2418202

相關問題