Я новичок в C++. Недавно, когда я занимался написанием связанного списка, я попытался использовать список инициализации для моего конструктора классов, чтобы назначить NULL в head-> next.Почему я не могу использовать оператор со стрелкой в списке инициализации?
В классе contructor он предупреждает, что оператор стрелки «ожидается a» («или« {»). Почему такая ошибка? (Я знаю, что могу инициализировать членов класса только в блоке, но почему «т я делаю это с этим указателем) Благодаря
Вот мой файл заголовка для 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' не инициализируется. Во-вторых, вы не можете иметь выражения в списке инициализаторов. –
@Someprogrammerdude, что относительно постоянных выражений? –
Почему? Потому что именно так был разработан язык. (Предположительно, списки инициализации всегда были предназначены для инициализации самого объекта, а не для других объектов, на которые его участники могли бы указывать.) – TheUndeadFish