首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > WinCE >

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

2012-12-27 
关于相同函数名不同参数的问题最近刚接触WinCE开发环境,遇到一个很诡异的问题如下定义:相同的函数名,但是

关于相同函数名不同参数的问题
最近刚接触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) ;

[最优解释]
先试试这两个:

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

会不会报错?

[其他解释]
可能是 void* 的问题,因为 void* 可以指向任何指针,所以使用具体类型的指针就没有问题了(猜的,LZ 试试吧)

例如:
bool Write(int* piDest) ;
size_t Write(FILE* aFile) ;
[其他解释]
这个警告的意思是重载函数不能根据返回类型来区分。也就说编译器认为你这两个函数的参数是一样的。
你看看FILE是不是被定义成void
[其他解释]
引用:
先试试这两个:

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

会不会报错?



这样是不会报错的,我试过的,可是我写的那种在win32下完全正常啊!
[其他解释]
是不是你使用的编译器认为void*指针是一种通用指针类型,和所有的指针类型一样。
例如你调用 
FILE* aFile;
Write(aFile),因为FILE*也可以看做是void*
[其他解释]
应该是 void* 的问题
[其他解释]
C++重载函数,出现win32可以、WINCE不行,应该是编译器不识别的问题。而且,这样定义也不够严谨,容易出错,建议按照楼上说的改改
[其他解释]
en ,应该是 void* 的问题
[其他解释]
可能是变异环境的原因

热点排行