使用stl类模板出现异常

使用stl类模板出现错误
1,想在A模板类中调用B类的test方法,代码如下;
test.h

#pragma once
template<class T>
class A
{
public:
void button1click();
};
template<class T>
void A<T>::button1click()
{
     T.test();
}

testcmd2010.cpp

#include "stdafx.h"
#include "Test.h"
#include <iostream>
using namespace std;
class B
{
public:
void test()
{
cout<<"test"<<endl;
}
};
int main( )
{
A<B>  a;
a.button1click();
}

错误信息 
error C2143: syntax error : missing ';' before '.' e:\projects\testcmd2010\testcmd2010\test.h 11 1 TestCmd2010

2,还有如何在A类模板类中使用B的指针来调用B的方法test()
用类指针来使用class A和 class B
就是 用C++ 带指针参数的类模板  
大概想把button1click方法和main函数改为如下代码

template<class *T>
void A<*T>::button1click()
{
     T->test();
}
int main( )
{
A<B*>  a = new A<B*>();
a->button1click();
}




------解决方案--------------------
这个样子 
T Obj;
Obj.Test();
或者直接用临时对象
T().Test();
要么直接把Test定义成符号重载
void operator()()
{
Test();
}

然后这么调用
T()();