2015-08-26 2 views
0

Я получаю следующую ошибку в VS2015. Мне не кажется очевидным, что я испортил шаблоны.Ошибка c2440 '=' не может конвертировать из int * в тип <T> *

Любые курсоры (ы) действительно оценен!

C2440 Ошибка '=': не удается преобразовать из 'междунар *' до '*' DNode

template<class Type> 
    class DNode <- *** THIS IS THE TYPE *** 
    { 
    public: 
     Type *next; 
     Type *previous; 
     Type value; 

     DNode(Type valueParam) 
     { 
      value = valueParam; 
      next = previous = NULL; 
     } 
    }; 

    template<class T> 
    class DLinkedList 
    { 
     DNode<T> *head; 
     DNode<T> *tail; 

    public: 
     DLinkedList() 
     { 
      head = tail = NULL; 
     } 

     T pop_tail() 
     { 
      if (tail == NULL) return -1; 
      T value; 
      if (head == tail) 
      { 
       value = tail->value; 
       free(tail); 
       head = tail = NULL; 
       return value; 
      } 
      else 
      { 
       DNode<T> *ptr = tail; 
       value = tail->value; 
       tail = tail->previous; <-- *** THIS LINE THROWS ERR *** 
       tail->next = NULL; 
       free(ptr); 
       return value; 
      } 
     } 
    } 

ответ

4

DNode::previous имеет тип Type*, не DNode<Type>*.

Возможно, вы укажете как DNode::next, так и DNode::previous как тип DNode<Type>*.

+0

Aw. Имеет смысл. Спасибо! Я отмечу это как ответ за 8 минут –

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