C++-c++模板
为何最后实例化出错
#include<iostream>
using namespace std;
template<typename T>
struct node{
T elem;
node *next;
};
template<typename T>
class list{
public:list();
~list();
node<T>* creat(T x);
bool isempt();
void Delete(T x);
void deletelist();
void insert(T x);
T find(T x);
private:
node<T> *Node;
};
template<typename T>
list<T>::list()
{
Node=NULL;
}
template<typename T>
list<T>::~list()
{
node<T> *p,*p2;
for(p=Node;p!=NULL;p=p2)
{
p2=p->next;
delete p;
}
}
template<typename T>
bool list<T>::isempt()
{
return Node->next==NULL;
}
template<typename T>
node<T>* list<T>::creat(T x)
{
node<T> *head=Node new[sizeof(Node)];
node<T> * p,*q=head;
q->next=NULL;
for(int i=0;i<x;i++)
{
p=Node new[sizeof(Node)];
if(p==NULL)
cout<<"error"<<__line__<<"n";
p->elem=i;
q->next=p;
q=p;
}
q->next=NULL;
return head;
}
int main()
{
node<int> *p;
list<int> ls;
p=ls.creat(5);
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
你的代码尽是语法问题,已经修改好了,主要是标注的那些地方
#include<iostream>
using namespace std;
template<typename T>
struct node{
T elem;
node *next;
};
template<typename T>
class list{
public:list();
~list();
node<T>* creat(T x);
bool isempt();
void Delete(T x);
void deletelist();
void insert(T x);
T find(T x);
private:
node<T> *Node;
};
template<typename T>
list<T>::list()
{
Node = NULL;
}
template<typename T>
list<T>::~list()
{
node<T> *p,*p2;
for(p = Node;p != NULL;p = p2)
{
p2 = p->next;
delete p;
}
}
template<typename T>
bool list<T>::isempt()
{
return Node->next == NULL;
}
template<typename T>
node<T>* list<T>::creat(T x)
{
node<T> *head = new node<T>; // 这里
node<T> * p = head; // 这里
node<T> *q = head; // 这里
q->next = NULL;
for(int i=0;i<x;i++)
{
p = new node<T>; // 这里
if(p == NULL)
cout << "error" << endl;
p->elem = i;
q->next = p;
q = p;
}
q->next = NULL;
return head;
}
int main()
{
node<int> *p;
list<int> ls;
p = ls.creat(5);
}