Эта строка имеет ошибку. Я попробовал много разных изменений, чтобы попытаться исправить, но я не могу понять, что это правильно. Я реализую очередь (используя список), и эта конкретная строка является частью операции enqueue (int item).
node obj = new node (item, <node * pointer>);
Конструктор:
node(int new_data, node * next_node ){
data = new_data ;
next = next_node ;
}
Я пробовал эту строку:
node * ptr = NULL;
node obj = new node (item, ptr);
Но это все равно дает ту же ошибку. Поскольку этот узел будет последним узлом в очереди, он не должен указывать ни на что (возможно, я приближаюсь к этому неправильно !?). Установка указателя на NULL
работает в разделах до этого кода. Отличным началом было бы объяснить, что на самом деле означает сообщение об ошибке, т.е. Я передаю "узел", и он ожидает "узла" или наоборот? Возможно, мне не хватает информации о указателях или материалах, связанных с кучей. Спасибо заранее за любую помощь.
new
-expression возвращает указатель на выделенный объект. Поэтому вам нужно:
node* obj = new node(item, ptr);
Это должно быть достаточно очевидным из сообщения об ошибке. Он говорит, что вы не можете конвертировать из node*
в node
, поскольку вы объявили obj
как node
. Это не относится к аргументам, которые вы передаете.
Конечно, вы просто не можете использовать new
вообще:
node obj(item, ptr);