| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 772 人关注过本帖
标题:请问类模板问题
只看楼主 加入收藏
ou1111
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:87
专家分:162
注 册:2010-10-26
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:10 
请问类模板问题
程序代码:
#include<iostream.h>
template <class T>
struct node
{
  T data;
  struct node *next;
};

class list
{private:
  node *head,*tail;
public:
    list()
    {head=NULL;tail=NULL;}
    void insert(T x)//为什么说没有定义T呢
    {
      node *p;
      p=new node;
      p->data=x;
      p->next=NULL;
      if(head==NULL)
      {head=p;p->next=tail;}
      else
      { p->next=head;
      head=p;}   
    }
    void show()
    {
      node *p;
      p=head;
      while(p)
      {
        cout<<p->data;
        p=p->next;
      }   
    }
    ~list()
    {
      node *p;
      while(head)
      {
        p=head;
        head=head->next;
        delete p;
      }
    head=NULL;
    tail=NULL;   
    }

};

搜索更多相关主题的帖子: 模板 
2010-11-11 16:25
m21wo
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:4
帖 子:440
专家分:1905
注 册:2010-9-23
收藏
得分:10 
程序代码:
#include<iostream>
using namespace std;
template <class T>
struct node
{
  T data;
  struct node<T> *next;
};
template <class T >
class list
{
private:
  node<T> *head,*tail;
public:
    list()
    {head=NULL;tail=NULL;}
    void insert(T x)//为什么说没有定义T呢
    {
      node<T> *p;
      p=new node;
      p->data=x;
      p->next=NULL;
      if(head==NULL)
      {head=p;p->next=tail;}
      else
      { p->next=head;
      head=p;}  
    }
    void show()
    {
      node<T> *p;
      p=head;
      while(p)
      {
        cout<<p->data;
        p=p->next;
      }  
    }
    ~list()
    {
      node<T> *p;
      while(head)
      {
        p=head;
        head=head->next;
        delete p;
      }
    head=NULL;
    tail=NULL;  
    }

};
int main()
{
    list<int> f;
}


If You Want Something, Go Get It, Period.
2010-11-11 18:51
ou1111
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:87
专家分:162
注 册:2010-10-26
收藏
得分:0 
回复 2楼 m21wo
图片附件: 游客没有浏览图片的权限,请 登录注册

还是同样的错误
2010-11-11 19:07
m21wo
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:4
帖 子:440
专家分:1905
注 册:2010-9-23
收藏
得分:0 
我帮你很改了几处啊!上面没标出来啊!我这没错误啊!肯定没仔细看

If You Want Something, Go Get It, Period.
2010-11-11 22:25
玩出来的代码
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:河南新乡
等 级:贵宾
威 望:11
帖 子:742
专家分:2989
注 册:2009-10-12
收藏
得分:0 
若2楼的代码在你的编译器中还是错误的,我想LZ或许应该换一个编译器。

离恨恰如春草,更行更远还生。
2010-11-11 23:13
ou1111
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:87
专家分:162
注 册:2010-10-26
收藏
得分:0 
回复 4楼 m21wo
图片附件: 游客没有浏览图片的权限,请 登录注册


还是有错呀。。。。。。。难道是VC6.0不能跟win7兼容问题???????????
2010-11-12 08:19
zhoufeng1988
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:北京
等 级:贵宾
威 望:27
帖 子:1432
专家分:6329
注 册:2009-5-31
收藏
得分:10 
Have a try.
程序代码:
/*------------------------------------------

 取消TEST_MAIN定义则关闭测试运行。

 ------------------------------------------*/
#define TEST_MAIN
//#undef TEST_MAIN

#ifdef TEST_MAIN
    typedef char * pcstr;
#endif
// 测试链表模板

#include<iostream.h>

template<class T>
struct node
{
  T data;
  node<T> *next;
};

template< class T>
class list
{
private:
  node<T> *head,*tail;
public:
    list()
    {
        head = NULL;
        tail = NULL;
    }

    void insert(T x)        //为什么说没有定义T呢
    {
      node<T> *p;
      p = new node<T>;
      p -> data = x;
      p -> next = NULL;
      if( head == NULL)
      {
        head = p;
        p -> next = tail;
      }
      else
      {
        p -> next = head;
        head = p;
      }  
    }

    void show()
    {
      node<T> *p;
      p = head;
      while(p)
      {
        cout<<p->data;
        p=p->next;
      }  
    }

    ~list()
    {
        node<T> *p;
        while(head)
        {
            p = head;
            head=head->next;
            delete p;
          }

        head=NULL;
        tail=NULL;  
    }
};

#ifdef TEST_MAIN
   
int main()
{
    list<pcstr> strs;
    strs.insert( "C Program\n");
    strs.insert( "Cpp Program\n");
    strs.insert( "C# .net Program\n");
    strs.insert( "Java Program\n");

    strs.show();

    return 0;
}

#endif

2010-11-12 10:06
ou1111
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:87
专家分:162
注 册:2010-10-26
收藏
得分:0 
我找出错误了,2楼的程序
  node<T> *head,*tail;
public:
    list()
    {head=NULL;tail=NULL;}
    void insert(T x)//为什么说没有定义T呢
    {
      node<T> *p;
      p=new node;//这里应该是p=new node<T>
      p->data=x;
      p->next=NULL;
      if(head==NULL)
      {head=p;p->next=tail;}
      else
      { p->next=head;
      head=p;}  
    }

学习了,感谢大家的帮助!!!!!!!!!!


2010-11-12 10:31
missiyou
Rank: 5Rank: 5
等 级:贵宾
威 望:16
帖 子:531
专家分:218
注 册:2007-10-9
收藏
得分:0 
/*
*
*/

#include <iostream>
using namespace std;

//Node 结点
template <class T>
struct Node
{
    T data;
    struct Node *next;
    Node():next(NULL){}
    Node(Node *pNext, T &x):next(pNext), data(x){}
};

template <class T>
class List
{   
    public:
    typedef Node<T>* NodePtr;
    List():head(NULL), tail(NULL){ }
    void Insert(T x)
    {
        NodePtr pNode;
        if (NULL == head)
            pNode = new Node<T>(tail, x);
        else
            pNode = new Node<T>(head, x);
        head = pNode;
    }
    void Show()
    {
        NodePtr pNode;
        pNode = head;
        while(pNode)
        {
            cout << "data:" << pNode->data << endl;
            pNode = pNode->next;
        }// while pNode != Null
    }
    //pass
    private:
    //pass
        NodePtr head, tail;
};

int main()
{
    List<char*> strList;
    strList.Insert("hello");
    strList.Insert("world");
    strList.Insert("Insert");
    strList.Insert("endl");
    strList.Show();
}
本人很垃圾, 好好学习! 借你代码,改了改
2010-11-12 11:04
zhoufeng1988
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:北京
等 级:贵宾
威 望:27
帖 子:1432
专家分:6329
注 册:2009-5-31
收藏
得分:0 
回复 9楼 missiyou
不要说自己垃圾撒,你的代码风格还是很好的,看着很舒服。绝对不是垃圾哈。
2010-11-12 14:59
快速回复:请问类模板问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.063018 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved