常量模板参数类的写法解决方法

常量模板参数类的写法
例:
template <class   T,   class   D,   int   token>
CObj
{
public:
        enum   {   TOKEN   =   token   };           //   传递常量,这样是否正确?

        static   CObj*   Create();
public:
        CObj();

private:  
      T   *   pT;
      D       iD;
};

求构造函数与Create函数的实现写法。谢谢!


------解决方案--------------------
template <class T, class D, int token>
class CObj
{
public:
enum { TOKEN = token };

static CObj* Create();
public:
CObj();

private:
T * pT;
D iD;
};

template <class T, class D, int token>
CObj <T,D,token> ::CObj()//:pT(new T)
{
//...
}
template <class T, class D, int token>
CObj <T,D,token> * CObj <T,D,token> ::Create()
{
//...
return 0;
}

int main()
{
CObj <int,int,1> * p=CObj <int,int,1> ::Create();
return 0;
}
------解决方案--------------------
enum { TOKEN = token }; // 传递常量,这样是否正确?
正确
------解决方案--------------------
enum { TOKEN = token };
正解
------解决方案--------------------
试试typedef

typedef CObj <int,int,1> ID1_CObj;
typedef CObj <int,int,2> ID2_CObj;//这是两个不同的类

ID1_CObj* p=ID1_CObj::Create();
ID2_CObj* p=ID2_CObj::Create();