2013-12-01 1 views
0

У меня есть ошибка в следующем коде C++:C++ получает «недопустимое определенный пользователь преобразования» ошибка

class Node 
{ 
    int value; 
    Node *prev, *next; 
public: 
    Node(int value = 0, Node* prev = NULL, Node* next = NULL) 
    { 
     this->value = value; 
     this->next = next; 
     this->prev = prev; 
    } 
} 


class LinkList 
{ 
    Node head; 

    void add(int value) 
    { 
     head = new Node(value, &head, NULL); 
    } 
} 

Я получаю сообщение об ошибке внутри функции добавления, когда я пытаюсь инициализировать голова.

error: invalid user-defined conversion from 'Node*' to 'const Node&' [-fpermissive]

Может ли кто-нибудь помочь мне в этом?

+2

'head' не является указателем. Вы пытаетесь инициализировать его как один. – juanchopanza

+0

В C++ классы заканчиваются точкой с запятой. Вы должны закончить свои классы '};'. Прямо сейчас у вас есть только '}', и у вас нет ***; ***. – abelenky

ответ

2

Это было бы правильно в Java:

head = new Node(value, &head, NULL); 

В C++ это:

head = Node(value, &head, NULL); 
+0

Значит, вы имеете в виду, что новый возвращает указатель на объект вместо фактического объекта? – user2565010

+1

@ user2565010 yes, 'new' выделяет память для объекта. –

0

В классе изменения LinkList элемента данных

узла головки;

в

Node *head; 
+0

Это не то, что ему нужно. Как вы можете видеть, он передал ссылку главы на конструктор, и конструктор берет указатель не двойной указатель. –

Смежные вопросы