2016-10-20 36 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; 

使用箭头操作之前。