不要进来

firstdad 2008-09-27 11:46:57
哇, 你真的进来了,你胆量不小啊, 呵呵, 进来来了 就帮我看下下面的code, 谢谢

class A
{
protected:
A(){}
virtual ~A(){}
public
A *GetInstance(int nType)
{
if(nType == 0) return new B;
if(nType == 1) return new C;
}
void ResInstance() { delete this; }
};

class B : public A
{ ...}
class C : public A
{ ...}


////////
A a;
A *pA = a.GetInstance(1);
....
a.ResInstance();
...全文
156 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
MagiSu 2008-09-29
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 xmm985326 的回复:]
if(nType == 0) return new B;
if(nType == 1) return new C;

B和C在前面没有声明,不能用吧?
而且,在前面先声面一下之后,没有定义的话,只能返回引用或指针类型

class B;
class C;
class A
{
//.....

if(nType == 0) return new B&;
if(nType == 1) return new C&;
//...
};

//再这后面放B和C的定义

[/Quote]

你这样也是不行的。关键是作为基类怎么可能知道派生类的存在呢?
guizi110 2008-09-29
  • 打赏
  • 举报
回复
怎么都看不懂呢?
kkndciapp 2008-09-29
  • 打赏
  • 举报
回复
楼主想要做什么?
firstdad 2008-09-29
  • 打赏
  • 举报
回复
哦, 忘了 前面定义了
zgjxwl 2008-09-28
  • 打赏
  • 举报
回复
此地无银三百两.
微甜呼吸 2008-09-28
  • 打赏
  • 举报
回复
if(nType == 0) return new B;
if(nType == 1) return new C;

B和C在前面没有声明,不能用吧?
而且,在前面先声面一下之后,没有定义的话,只能返回引用或指针类型

class B;
class C;
class A
{
//.....

if(nType == 0) return new B&;
if(nType == 1) return new C&;
//...
};

//再这后面放B和C的定义
zhyinty 2008-09-28
  • 打赏
  • 举报
回复
应该还要前视定义吧。
lily604 2008-09-28
  • 打赏
  • 举报
回复
不客气

64,318

社区成员

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

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