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