关于相同函数名不同参数的有关问题
关于相同函数名不同参数的问题最近刚接触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* 的问题
[其他解释] 可能是变异环境的原因