2016-10-20 41 views
-1

是的,我知道它是一個像百問題的副本,但我一直在這個工作幾個小時,沒有任何工作。在類中初始化結構變量成員給出了分段錯誤

我想要做的就是在類定義中初始化一些私有變量。

的結構是這樣的:

#include <string> 
using namespace std; 
typedef string DataType; 

class Slist { 
public: 

private: 
// private data type: Node 

    struct Node { 
     DataType data; 
     Node  *next; 
    }; 

// state variables: 

    Node *head, *tail, *cursor; 

}; 

我初始化它們像這樣:

Slist::Slist (void) { 
    cursor -> data = 'n'; 
    cursor -> next = new Node; 

,這是給我一個分段錯誤。我知道這意味着我嘗試訪問不存在的內存,但儘管這些是私有變量,但我試圖在Slist CONSTRUCTOR中訪問它們,這當然可以訪問它們。如果有人會告訴我發生了什麼,我會非常感激。

+0

'cursor'是一個指針,我沒有看到任何代碼指定它的存儲。 – user4581301

+4

首先,在使用之前寫入'cursor = new Node;'。 – songyuanyao

+0

謝謝!我不相信我首先不這樣做。非常感謝你。 – Nienaber

回答

0

您沒有初始化或將指針指定給內存位置。任何指針都需要有效的內存位置才能使用。

你可以做

cursor = new Node; 

使用箭頭操作之前。