模板类中带参数的构造函数有关问题
模板类中带参数的构造函数问题
模板类如下,在MyCounter.h中:
///////////////////////////////////////////////////////
template <class T>
class CMyCounter
{
public:
CMyCounter(int nKey=1){ m_nKey = nKey; m_nCnt += m_nKey;};
virtual ~CMyCounter(){ m_nCnt -= m_nKey;};
int GetCount(){ return m_nCnt; };
private:
static int m_nCnt;
int m_nKey;
};
template <class T>
int CMyCounter<T>::m_nCnt = 0;
///////////////////////////////////////////////////////
调用类如下:
#include "MyCounter.h"
class CTestCnt
{
public:
CTestCnt();
virtual ~CTestCnt();
int GetCnt(){return m_cnter.GetCount();};
private:
CMyCounter<CTestCnt> m_cnter(2);
};
///////////////////////////////////////////////////////
编译报错,提示:error C2059: syntax error : 'constant'
------解决方案--------------------
成员变量只能在构造函数里初始化, 不能在定义的地方初始化:
模板类如下,在MyCounter.h中:
///////////////////////////////////////////////////////
template <class T>
class CMyCounter
{
public:
CMyCounter(int nKey=1){ m_nKey = nKey; m_nCnt += m_nKey;};
virtual ~CMyCounter(){ m_nCnt -= m_nKey;};
int GetCount(){ return m_nCnt; };
private:
static int m_nCnt;
int m_nKey;
};
template <class T>
int CMyCounter<T>::m_nCnt = 0;
///////////////////////////////////////////////////////
调用类如下:
#include "MyCounter.h"
class CTestCnt
{
public:
CTestCnt();
virtual ~CTestCnt();
int GetCnt(){return m_cnter.GetCount();};
private:
CMyCounter<CTestCnt> m_cnter(2);
};
///////////////////////////////////////////////////////
编译报错,提示:error C2059: syntax error : 'constant'
------解决方案--------------------
成员变量只能在构造函数里初始化, 不能在定义的地方初始化:
- C/C++ code
class CTestCnt { public: CTestCnt() : m_cnter(2) {}; virtual ~CTestCnt(); int GetCnt(){return m_cnter.GetCount();}; private: CMyCounter<CTestCnt> m_cnter; };