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