关于相同函数名不同参数的问题

还有名字 2012-08-27 10:35:39
最近刚接触WinCE开发环境,遇到一个很诡异的问题如下定义:相同的函数名,但是里面的参数,这两个函数声明应该完全没问题的啊,可是放在Wince环境下编译就会出错,提示
error C2556: 'size_t Write(FILE *)' : overloaded function differs only by return type from 'bool Write(void *)'

何解?!

bool Write(void* aDest) ;
size_t Write(FILE* aFile) ;
...全文
956 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
zouxiang1 2012-08-30
  • 打赏
  • 举报
回复
可能是变异环境的原因
hbseu 2012-08-28
  • 打赏
  • 举报
回复
en ,应该是 void* 的问题
一介布衣萧萧 2012-08-28
  • 打赏
  • 举报
回复
C++重载函数,出现win32可以、WINCE不行,应该是编译器不识别的问题。而且,这样定义也不够严谨,容易出错,建议按照楼上说的改改
91program 2012-08-28
  • 打赏
  • 举报
回复
应该是 void* 的问题
91program 2012-08-27
  • 打赏
  • 举报
回复
可能是 void* 的问题,因为 void* 可以指向任何指针,所以使用具体类型的指针就没有问题了(猜的,LZ 试试吧)

例如:
bool Write(int* piDest) ;
size_t Write(FILE* aFile) ;
91program 2012-08-27
  • 打赏
  • 举报
回复
先试试这两个:

bool Write(void* aDest) ;
size_t Write(int iSize) ;

会不会报错?
xgbing 2012-08-27
  • 打赏
  • 举报
回复
这个警告的意思是重载函数不能根据返回类型来区分。也就说编译器认为你这两个函数的参数是一样的。
你看看FILE是不是被定义成void
xgbing 2012-08-27
  • 打赏
  • 举报
回复
是不是你使用的编译器认为void*指针是一种通用指针类型,和所有的指针类型一样。
例如你调用
FILE* aFile;
Write(aFile),因为FILE*也可以看做是void*
还有名字 2012-08-27
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
先试试这两个:

bool Write(void* aDest) ;
size_t Write(int iSize) ;

会不会报错?
[/Quote]


这样是不会报错的,我试过的,可是我写的那种在win32下完全正常啊!

19,520

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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