저는 C++의 초보자입니다. 최근에 링크드 라이징을 연습 할 때, 클래스 생성자에 초기화리스트를 사용하여 NULL을 head-> next에 할당하려고했습니다.초기화 목록에서 화살표 연산자를 사용할 수없는 이유는 무엇입니까?
클래스 생성자에서 내 화살표 연산자가 "예상 된 '('또는 '{'") 왜 그런 오류가 있습니까? (블록에있는 클래스 멤버를 초기화 할 수 있지만 왜 't 나는이 포인터로 이렇게) 감사
여기 LinkedList의 내 헤더 파일이다 :?!linkedlist.h
#include <iostream>
using namespace std;
struct node {
int val;
node *next;
};
class linkedlist {
private:
node *head;
int listlen;
public:
linkedlist();
void insert(node*, int);
void del(node*);
void reverse(node*);
void traverse(node*);
int random();
~linkedlist();
};
그리고 여기 내 클래스 생성자의 :
linkedlist.cpp 일반적으로
#include "linkedlist.h"
#include <iostream>
linkedlist::linkedlist() :listlen(0), head->next(NULL){}
두 가지 문제 : 먼저 'head'가 초기화되지 않았습니다. 둘째, 이니셜 라이저 목록에 표현식을 사용할 수 없습니다. –
@Someprogrammerdudu 상수 표현은 어떨까요? –
왜? 그게 바로 언어가 어떻게 설계 되었기 때문입니다. (아마도 초기화 목록은 항상 객체 자체를 초기화하기위한 것이지 멤버가 가리킬 수있는 다른 객체는 아닙니다.) – TheUndeadFish