在类中初始化结构变量成员会导致分割错误

Initializing structure variable members in class gives segmentation fault

本文关键字:分割 错误 成员 变量 初始化 结构      更新时间:2023-10-16

是的,我知道这是一堆重复的问题,但我已经做了几个小时了,没有任何问题。

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

结构如下:

#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;

这给了我一个分割错误。我知道这意味着我正在尝试访问不存在的内存,但是尽管这些是私有变量,我还是试图在列表构造函数中访问它们,这当然可以访问它们。如果有人能告诉我是怎么回事,我将非常感激。

未初始化指针或将指针赋值给内存位置。任何指针都需要有效的内存位置才能使用。

你可以做

cursor = new Node;

在使用箭头操作符之前