首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2012-02-12 
常量模板参数类的写法例:template classT,classD,inttokenCObj{public:enum{TOKENtoken}//传递常量,这

常量模板参数类的写法
例:
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();

热点排行