class MyClass
{   
public:
MyClass(){}

template   <class   T>   
T* CreateSomething()   
{   
T *pT=new T;
return pT;   
}
};
用的时候,我这样写的:
MyClass m;
int *p=m.CreateSomething<int>();
结果就编译不过去。我用的VC6 。请教一下大家,这里应该怎么改?

解决方案 »

  1.   

    出错提示是error C2062: type 'int' unexpected我是真没办法了啊。救命啊。注:我只把问题抽象出来了,只用的了new来说明一下问题,实际中是比这要复杂的多的。
      

  2.   

    照你的写法:MyClass m;实现后T是空的, 无法推出CreateSomething用T
    用下面代码:template   <class   T> 
    class MyClass
    {   
    public:
        MyClass(){}
         
            T* CreateSomething()   
        {   
            T *pT=new T;
            return pT;   
        }
    };
    MyClass<int> m;
    m.CreateSomething();
      

  3.   

    不是啊,我的MyClass类,本身就不是一个模板类。只有一个函数需要带一个模板参数。
    MyClass m;
    int *p=m.CreateSomething<int>();//这里我指定了类型为int啊,怎么会是空啊?不明白。。
      

  4.   

    应该用 template <typename T> 吧?