免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1650 | 回复: 3
打印 上一主题 下一主题

一个虚函数的问题。请各位大虾指教! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-11-28 09:13 |只看该作者 |倒序浏览
我在Redhat下写一个小程序,想试虚函数,但总是不能编译通过,程序如下:

class CShape
{
   virtual void Draw();  
};

void CShape:raw()
{
  printf("CShape:raw.\n";
}

class CCircle : public CShape
{
   virtual void Draw();
};

void CCircle:raw()
{
  printf("CCircle:raw.\n";
}

void DoDraaw(CShape& s)
{
  s.Draw();
}

main()
{
  CCircle c;
  DoDraw(c);
}

这是怎么回事啊?

论坛徽章:
0
2 [报告]
发表于 2003-11-28 09:47 |只看该作者

一个虚函数的问题。请各位大虾指教!

你怎么编译的?
这个是完整文件么?
出错的信息是什么?

论坛徽章:
0
3 [报告]
发表于 2003-11-28 09:54 |只看该作者

一个虚函数的问题。请各位大虾指教!


  1. /*vitual.cxx*/
  2. #include <cstdio>;

  3. class CShape
  4. {
  5. public:
  6.     virtual void Draw();
  7. };

  8. void CShape::Draw()
  9. {
  10.     printf("CShape::Draw.\n");
  11. }

  12. class CCircle : public CShape
  13. {
  14. public:
  15.     virtual void Draw();
  16. };

  17. void CCircle::Draw()
  18. {
  19.     printf("CCircle::Draw.\n");
  20. }

  21. void DoDraw(CShape& s)
  22. {
  23.     s.Draw();
  24. }

  25. main()
  26. {
  27.     CCircle c;
  28.     DoDraw(c);
  29. }
复制代码

#g++ vitual.cxx
#./a.out

论坛徽章:
0
4 [报告]
发表于 2003-11-28 10:28 |只看该作者

一个虚函数的问题。请各位大虾指教!

DoDraw(CShape& s)的定义中,你不要用引用,应该使用指针。
如下:
DoDraw(CShape* pShape)
{
pShape->;Draw();
}
main()
{
    CCircle c;
    DoDraw(&c);
}

然后用g++编译即可。

不过挺奇怪的,我的机器两个都能编译并运行成功,怪了!
编译器版本:gcc 2.2.4
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP