C++实现单向链表的问题
我通过模板实现了一个泛型链表结构,但是发现指定数据类型为指针类型和基础数据类型有冲突。比如我如果写入这个方法template<class T> void Add(T &value),如果T是指针,则编译就断就会出错,再有这个方法,template<class T> T& Get(int index),我想让这个方法在用户传入错误的索引值时返回nullptr,但是如果T是int类型,那个编译时也会出错,请问这个问题应该如何解决,非常感谢!
追问:声明如下:
#pragma once
#ifndef _LISTNODE_
#include "ListNode.cpp"
#endiftemplate<class T>
class List
{
private:
ListNode<T> *head;
ListNode<T> *tail;
ListNode<T> *cur;
private:
bool IsIndexValid(const int index);
ListNode<T>* GetNode(const int index);
public:
List();
~List();
void Add(const T value);
void Add(const int index, const T value);
void RemoveAt(const int index);
void RemoveAll();
bool IsEmpty();
int Count();
T& Get(const int index);
T Next();
void AppendList(List<T> &list);
void ResetCur();
};
其中T& Get(const int index)的实现代码如下:
T& List<T>::Get(const int index)
{
ListNode<T> *node = GetNode(index);
if(node == nullptr)
{
return nullptr;
}
else
{
return node->GetData();
}
}
这里有一个问题,如果T是一个基础数据类型(int),那么编译就会出错,说是int不能转换为nullptr。如果T是一个指针则没问题,但是Get的返回值是一个引用,指针似乎也不能转换为&,请问这种问题一般应该怎么处理啊,感谢赐教!