问题描述
- C++问题,关于模板类和类模板,求大神帮助
- 不知道错的原因,希望大神帮忙解决,不胜感激。
#include<iostream>using namespace std;template <class T>class List{public: List(T *elem); void Traverse();private: typedef struct LNode { T *m_elem; struct LNode *next; }Node*LinkNode; LinkNode head;};template <class T>List<T>::List(T &elem){ head=new Node; *(head->m_elem)=elem; head->next=NULL;}int main(void){ double a=2.0; List<double>head(a); getchar(); return 0;}
解决方案
http://blog.csdn.net/sunxx1986/article/details/6619144
解决方案二:
#include
using namespace std;
template
class List
{
public:
List(T elem);
void Traverse();
private:
typedef struct LNode
{
T m_elem;
struct LNode *next;
}Node*LinkNode;
LinkNode head;
};
template
List::List(T elem)
{
head=new Node;
head->m_elem = elem;
head->next=NULL;
}
int main(void)
{
double a=2.0;
Listhead(a);
getchar();
return 0;
}
搞定,望采纳
解决方案三:
构造函数参数类型不一致
解决方案四:
#include<iostream>using namespace std;template <class T>class List{public: List(T &elem);//修改要和后面定义一致 ~List(); void Traverse();private: typedef struct LNode { T *m_elem; struct LNode *next; }Node*LinkNode; LinkNode head;};template <class T>List<T>::List(T &elem){ head=new Node; head->m_elem=&elem;//修改,head->m_elem未初始化,不能用*(head->m_elem) head->next=NULL;}template <class T>List<T>::~List()//增加{ Node* p = head *q; while (p) { q = p->next; delete p; p = q; } head=NULL;}int main(){ double a=2.0; List<double> head(a); getchar(); return 0;}
时间: 2024-08-21 16:23:23