一个虚函数的问题。请各位大虾指教!
我在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);
}
这是怎么回事啊?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
你怎么编译的?
这个是完整文件么?
出错的信息是什么?
复制代码
#g++ vitual.cxx
#./a.out
DoDraw(CShape& s)的定义中,你不要用引用,应该使用指针。
如下:
DoDraw(CShape* pShape)
{
pShape->;Draw();
}
main()
{
CCircle c;
DoDraw(&c);
}
然后用g++编译即可。
不过挺奇怪的,我的机器两个都能编译并运行成功,怪了!
编译器版本:gcc 2.2.4