当前位置:编程学习 > C/C++ >>

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"
#endif

template<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的返回值是一个引用,指针似乎也不能转换为&,请问这种问题一般应该怎么处理啊,感谢赐教!

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,