我在VS2015中收到以下错误。 对于我搞乱模板的内容,我并不明白。
非常感谢任何指针!
错误C2440' =':无法转换为' int *'到' 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;
}
}
}
答案 0 :(得分:4)
DNode::previous
的类型为Type*
,而不是DNode<Type>*
。
您可能希望将DNode::next
和DNode::previous
声明为DNode<Type>*
类型。