模板类中带参数的构造函数问题

RealInfo2012 2012-04-11 06:11:17
模板类如下,在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'
...全文
300 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
RealInfo2012 2012-04-11
  • 打赏
  • 举报
回复
谢谢,想了半天,没想到是这里,感谢!
www_adintr_com 2012-04-11
  • 打赏
  • 举报
回复
成员变量只能在构造函数里初始化, 不能在定义的地方初始化:

class CTestCnt
{
public:
CTestCnt() : m_cnter(2) {};
virtual ~CTestCnt();
int GetCnt(){return m_cnter.GetCount();};
private:
CMyCounter<CTestCnt> m_cnter;
};

64,691

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧