在类中初始化结构变量成员会给出分段错误

时间:2016-10-20 01:03:12

标签: c++ struct segmentation-fault

是的,我知道这是一百个问题的重复,但我已经在这个问题上工作了好几个小时,但没有任何工作。

我想要做的就是在类定义中初始化一些私有变量。

结构如下:

#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中访问它们,这当然可以访问它们。如果有人告诉我发生了什么,我将非常感激。

1 个答案:

答案 0 :(得分:0)

您没有初始化或指定指向内存位置的指针。任何指针都需要有效的内存位置才能使用。

你可以做到

cursor = new Node;

在使用箭头操作符之前。