C++问题,菜鸟求助,望大神解救

#include
using namespace std;
#define MAXSIZE 10
template
class List
{
public:
List(T *elem);
bool ListInsert(T elem);
bool ListDelete();
bool ListClear();
bool GetElem(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)
{
Listhead(2.0);
getchar();
return 0;
}

 老是提示有错误,但是不知道是哪里的问题,希望大神帮忙解答一下,不胜感激
 把代码放到代码片里,你的代码不对
 #define MAXSIZE 10
template <class T>
class List
{
public:
    List(T elem);
    bool ListInsert(T elem);
    bool ListDelete();
    bool ListClear();
    bool GetElem(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)
{
    List<double> head(2.0);
    getchar();
    return 0;
}

大神,我的错误在哪里啊,图片说明图片说明