我有一个 c++疑问 c++ 比较懂的 能帮我解答一下吗

gody_cboy 2012-08-13 01:56:13
我有一个c++ 疑问 希望高手能来解答
#include<iostream>
#include<string>
#include<stdlib.h>
template<class T>
class Node
{
public:T data;
Node(const T&item,Node<T>*ptrnext=NULL);

private:Node<T>*next;
};
template<class T>
Node<T>::Node(const T&item,Node<T>*ptrnext):data(item),next(ptrnext){}


//单链表的操作
template<class T>
Node<T>*GetNode(const T&item,Node<T>*nextptr=NULL)
{Node<T>*newnode=new Node<T>(item,nextptr);
if(newnode==NULL)
{std::cerr<<"创建结点失败"<<std::endl;
exit(1);}
return newnode;}

int main()
{
Node<int>*head=0;
GetNode(1); //这个是正确的
//GetNode(1,&head); //这个是错误的 不懂了 ?
GetNode(1,NULL); //这个也是错误的 ?

return 0;}
...全文
160 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
LL_zhuo 2012-08-13
  • 打赏
  • 举报
回复
应该是:
int main()
{
Node<int>*head=0;
GetNode(1); //这个是正确的
GetNode(1,head);
GetNode(1,(Node<int>*)NULL);
return 0;
}
第一个head这里因为head本身是指针类型,而c++里面指针类型是不可以引用的。
第二个NULL因为GetNode(const T&item,Node<T>*nextptr=NULL)这个函数涉及到了模板,
模板是不会自动进行隐式转换的,所以要将void*NULL显示转换为(Node<int>*)NULL。
luohengguo 2012-08-13
  • 打赏
  • 举报
回复
最近也在学习链表~~~可惜自己也不会~~
酱油党 2012-08-13
  • 打赏
  • 举报
回复
//我有一个c++ 疑问 希望高手能来解答  
#include<iostream>
#include<string>
#include<stdlib.h>
template<class T>
class Node
{
public:T data;
Node(const T&item,Node<T>*ptrnext=NULL);

private:Node<T>*next;
};
template<class T>
Node<T>::Node(const T&item,Node<T>*ptrnext):data(item),next(ptrnext){}


//单链表的操作
template<class T>
Node<T>*GetNode(const T&item,Node<T>*nextptr=NULL)
{Node<T>*newnode=new Node<T>(item,nextptr);
if(newnode==NULL)
{std::cerr<<"创建结点失败"<<std::endl;
exit(1);}
return newnode;}

int main()
{
Node<int>*head=0;
GetNode(1); //这个是正确的
GetNode(1,head); //这个是错误的
//head 类型是Node<int>* , 再用&类型错误
GetNode<int>(1,NULL); //这个也是错误的 ?
//你没有指明T的类型,这样就好了
return 0;
}
ouyh12345 2012-08-13
  • 打赏
  • 举报
回复
GetNode(1); //这个是正确的
当然是可以的,使用了默认参数

//GetNode(1,&head); //这个是错误的 不懂了 ?
类型不对,&head是Node<int>**

GetNode(1,NULL); //这个也是错误的 ?
是不是得加一个类型转换?
GetNode(1,(Node<int>*)NULL);

64,649

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧