这个错误是什么意思?VC++调试错误

勇敢的搬砖人 2010-05-25 04:39:41
这条错误是什么意思?
c:\documents and settings\administrator\桌面\hand modeling\index.h(20) : error C2555: 'Index::Display' : overriding virtual function differs from 'Finger::Display' only by return type or calling convention
...全文
184 17 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
勇敢的搬砖人 2010-05-25
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 my_live_123 的回复:]
'Index::Display' : overriding virtual function differs from 'Finger::Display' only by return type or calling convention
翻译:'Index::Display' 重写虚函数的返回类型或调用约定不同于'Finger::Display' !
[/Quote]
请看16楼之回复。谢谢!!!
勇敢的搬砖人 2010-05-25
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 lnuyasha_hrb 的回复:]
virtual Display(); 的返回值没有了啊 ,所以会报错说
不能根据返回值来重载函数
[/Quote]
/*
这么写对不,其中virtual void Display();是对Finger之虚函数Display()的重新定义。
*/
#include "Finger.h"

class Index : public Finger
{
public:
Index();
virtual ~Index();
double m_dR,m_dL1,m_dL2,m_dL3;
virtual void Display();

};
lnuyasha_hrb 2010-05-25
  • 打赏
  • 举报
回复
virtual Display(); 的返回值没有了啊 ,所以会报错说
不能根据返回值来重载函数
一根烂笔头 2010-05-25
  • 打赏
  • 举报
回复
'Index::Display' : overriding virtual function differs from 'Finger::Display' only by return type or calling convention
翻译:'Index::Display' 重写虚函数的返回类型或调用约定不同于'Finger::Display' !
勇敢的搬砖人 2010-05-25
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 pengzhixi 的回复:]
C/C++ code

class Finger
{
public:
Finger();
virtual ~Finger();
virtual Display();//少了返回类型void

};
[/Quote]
照你的改了,好使。不过还是有2个错误,我有点看不懂:
--------------------Configuration: Hand Modeling - Win32 Debug--------------------
Linking...
Finger.obj : error LNK2001: unresolved external symbol "public: virtual int __thiscall Finger::Display(void)" (?Display@Finger@@UAEHXZ)
Debug/Hand Modeling.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.

Hand Modeling.exe - 2 error(s), 0 warning(s)
pengzhixi 2010-05-25
  • 打赏
  • 举报
回复

class Finger
{
public:
Finger();
virtual ~Finger();
virtual Display();//少了返回类型void

};

zhaowenzhi1234 2010-05-25
  • 打赏
  • 举报
回复
虚函数用的不对~
勇敢的搬砖人 2010-05-25
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 ymj7150697 的回复:]
/下面是Index的Display()函数
virtual void Index::Display()
{
//中间是绘图代码,省略之
}


去掉前边的virtual virtual只能出现在类定义中
[/Quote]
按照你的改了,五个手指,错误减了5个,但原来在第一个的错误还是照旧,没变。
勇敢的搬砖人 2010-05-25
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 ymj7150697 的回复:]
/下面是Index的Display()函数
virtual void Index::Display()
{
//中间是绘图代码,省略之
}


去掉前边的virtual virtual只能出现在类定义中
[/Quote]请看下例:

//虚函数的实例
#include<iostream.h>
class Cshape
{ public: void SetColor( int color) { m_nColor=color;}
void virtual Display( void) { cout<<"Cshape"<<endl; }
private:
int m_nColor;
};
class Crectangle: public Cshape
{
public:
void virtual Display( void) { cout<<"Crectangle"<<endl; }
};
class Ctriangle: public Cshape
{
void virtual Display( void) { cout<<"Ctriangle"<<endl; }
};
class Cellipse :public Cshape
{
public: void virtual Display(void) { cout<<"Cellipse"<<endl;}
};
void main()
{
Cshape obShape;
Cellipse obEllipse;
Ctriangle obTriangle;
Crectangle obRectangle;
Cshape * pShape[4]=
{ &obShape, &obEllipse,&obTriangle, & obRectangle };
for( int I= 0; I< 4; I++)
pShape[I]->Display( );
}

资料来源:百度百科http://baike.baidu.com/view/161302.htm,我就是找这个做的。
equalsai 2010-05-25
  • 打赏
  • 举报
回复
/下面是Index的Display()函数
virtual void Index::Display()
{
//中间是绘图代码,省略之
}


去掉前边的virtual virtual只能出现在类定义中
勇敢的搬砖人 2010-05-25
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 itegel84 的回复:]
覆盖的时候父类和子类的两个函数返回值或者参数类型不一致
[/Quote]

//不知道哪里出现了问题,自己检查不出来,列出源代码,以供参考:
class Index : public Finger
{
public:
Index();
virtual ~Index();
double m_dR,m_dL1,m_dL2,m_dL3;
virtual void Display(); //错误指在这行

};
//下面是Finger类
class Finger
{
public:
Finger();
virtual ~Finger();
virtual Display();

};
//下面是Index的Display()函数
virtual void Index::Display()
{
//中间是绘图代码,省略之
}
yellowtree12 2010-05-25
  • 打赏
  • 举报
回复
重载和复写有点混用了
itegel84 2010-05-25
  • 打赏
  • 举报
回复
覆盖的时候父类和子类的两个函数返回值或者参数类型不一致
yaoqian156 2010-05-25
  • 打赏
  • 举报
回复
返回类型。。。
pengzhixi 2010-05-25
  • 打赏
  • 举报
回复
如果和基类那个函数的返回类型不是继承关系,那么就是错误的。
pengzhixi 2010-05-25
  • 打赏
  • 举报
回复
你复写后的那个函数的返回类型是否有继承关系呢?
昵称很不好取 2010-05-25
  • 打赏
  • 举报
回复
重载和复写有点混用了

65,187

社区成员

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

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