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;
}

 #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;
}

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;
}
搞定,望采纳

构造函数参数类型不一致