2016-10-20 16 views
-1

はい、100個の質問のように重複していることはわかっていますが、これを何時間も働いていて何も動作していません。クラス内の構造体変数メンバを初期化するとセグメント化エラーが発生します

私がやりたいことは、クラス定義内のいくつかのプライベート変数を初期化することです。

構造は次のようになります。

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

そして、これは私のセグメンテーションフォールトを与えています。私はこれが存在しないメモリにアクセスしようとしていることを知っていますが、これらのプライベート変数にもかかわらず、スライスコンストラクタでそれらにアクセスしようとしています。誰かが私に何が起きているか教えてくれたら、私は非常に感謝しています。

+0

'cursor'はポインタであり、私はそれを格納するコードを見ません。 – user4581301

+4

まず、使用する前に 'cursor = new Node;'と書いてください。 – songyuanyao

+0

ありがとう!私は最初にそれをしなかったとは信じられません。そんなに真剣にありがとう。 – Nienaber

答えて

0

ポインタを初期化せず、メモリ位置にポインタを割り当てませんでした。どんなポインタでも有効なメモリ位置が必要です。

あなたは、矢印演算子を使用する前に

cursor = new Node; 

を行うことができます。

関連する問題