Почему указатель NULL не работает? - PullRequest
0 голосов
/ 21 марта 2012

вот мой код

class LList{
struct Elem{int data;Elem *next;};     
Elem *head;
public:


void Push(int dat){
  if(head==NULL){
    head=new Elem;
    head->data=dat;
    head->next=NULL;
  } else {
    // ......
  }
}

Но когда я его использую, он не работает. Проблема в том, что он никогда не находит указатель NULL и он должен быть NULL. Даже когда я назначаю NULL указателю в конструкторе, он не работает. Visual Studio выдает сообщение об ошибке, в котором говорится, что я не могу получить доступ к нужной ячейке памяти.

1 Ответ

1 голос
/ 21 марта 2012

Просто инициализируйте head в ctor, и оно должно работать.

class LList{
  //...
  LList() : head(0) {} // or head(NULL) if you prefer
  // ...
};

Примечание: IIRC считается одинаково плохим стилем по сравнению с == NULL, как, например, == TRUE ... чем лучше (по моему не столь скромному мнению) стиль if(!head), но это это косметика. Так что просто записка.

...