C++构造函数问题

Flaght 2010-04-03 11:04:49

#include "stdafx.h"

class CProduct
{
public:
CProduct(void);
~CProduct(void);
virtual void Start(void) = 0;
};
class CProductWindows: public CProduct
{
public:
CProductWindows(void);
~CProductWindows(void);
virtual void Start(void);
};


class CProductLinux:public CProduct
{
public:
CProductLinux(void);
~CProductLinux(void);
virtual void Start(void);
};

class CFactory
{
public:
CFactory(void);
~CFactory(void);
virtual CProduct * FactoryMedot(void) = 0;
};

class CFactoryWindows:public CFactory
{
public:
CFactoryWindows(void);
~CFactoryWindows(void);
virtual CProduct* FactoryMedot(void);
};

class CFactoryLinux:public CFactory
{
public:
CFactoryLinux(void);
~CFactoryLinux(void);
virtual CProduct* FactoryMedot(void);
}

CProduct::CProduct(void)
{
printf("CProduct::CProduct");
}
CProduct::~CProduct(void)
{
printf("CProduct::~CProduct");
}
CProductWindows::CProductWindows(void)
{
printf("CProductWindows::CProductWindows\n");
}

CProductWindows::~CProductWindows(void)
{
printf("CProductWindows::~CProductWindows\n");
}
void CProductWindows::Start(void)
{
printf("WINDOWS-Product");
}

CProductLinux::CProductLinux(void)
{
printf("CProductLinux::CProductLinux\n");
}

CProductLinux::~CProductLinux(void)
{
printf("CProductLinux::~CProductLinux\n");
}

void CProductLinux::Start(void)
{
printf("LINUX-Product\n");
}

CFactory::CFactory(void)
{
printf("CFactory::CFactory");
}
CFactory::~CFactory(void)
{
printf("CFactory::~CFactory");
}


CFactoryWindows::CFactoryWindows(void)
{
printf("CFactoryWindows::CFactoryWindows\n");
}

CFactoryWindows::~CFactoryWindows(void)
{
printf("CFactoryWindows::~CFactoryWindows\n");
}

CProduct* CFactoryWindows::FactoryMedot(void)
{
return new CProductWindows;
}


CFactoryLinux::CFactoryLinux(void)
{
printf("CFactoryLinux::CFactoryLinux");
}

CFactoryLinux::~CFactoryLinux(void)
{
printf("CFactoryLinux::~CFactoryLinux");
}

CProduct* CFactoryLinux::FactoryMedot(void)
{
return new CProductLinux;
}
int _tmain(int argc, _TCHAR* argv[])
{
CFactoryWindows *fWindows = new CFactoryWindows;
CProduct *pWindows = fWindows->FactoryMedot();

CFactoryLinux *fLinux = new CFactoryLinux;
CProduct*pLinux = fLinux->FactoryMedot();

delete [] fWindows;
delete [] pWindows;
delete [] fLinux;
delete [] pLinux;
return 0;
}


但是居然报:
1>f:\code\data\s_factory\s_factory.cpp(55) : error C2533: “CProduct::{ctor}”: 构造函数不能有返回类型
1>f:\code\data\s_factory\s_factory.cpp(63) : error C2264: “CProduct::CProduct”: 函数定义或声明中有错误;未调用函数
1>f:\code\data\、\s_factory\s_factory.cpp(77) : error C2264: “CProduct::CProduct”: 函数定义或声明中有错误;未调用函数

请问这是为什么?构造函数明明没有返回类型啊?
...全文
185 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Flaght 2010-04-04
  • 打赏
  • 举报
回复
楼主羞愧接分......
genlic 2010-04-03
  • 打赏
  • 举报
回复
在vs2008里面测试了。 是楼上说的问题。
linoom 2010-04-03
  • 打赏
  • 举报
回复
struct class enum 等要以分号结束
lz 疏忽了
wangxipu 2010-04-03
  • 打赏
  • 举报
回复
class CFactoryLinux:public CFactory
{
public:
CFactoryLinux(void);
~CFactoryLinux(void);
virtual CProduct* FactoryMedot(void);
}; //少了分号
dubiousway 2010-04-03
  • 打赏
  • 举报
回复
class CFactoryLinux:public CFactory
{
public:
CFactoryLinux(void);
~CFactoryLinux(void);
virtual CProduct* FactoryMedot(void);
}; //少了分号
hrx1989 2010-04-03
  • 打赏
  • 举报
回复
00000

65,208

社区成员

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

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