我收到一个错误,指出两个重载具有相似的转换。我尝试了太多东西,但没有任何帮助。
这是那段代码
CString GetInput(int numberOfInput, BOOL clearBuffer = FALSE, UINT timeout = INPUT_TIMEOUT);
CString GetInput(int numberOfInput, string szTerminationPattern, BOOL clearBuffer = FALSE, UINT timeout = INPUT_TIMEOUT);
Run Code Online (Sandbox Code Playgroud)
我不明白string怎么可能等于long?
我正在使用 Visual C++ 6(是的,我知道它很旧,我正在处理遗留代码,所以我很无助)
编辑:触发错误的代码行是
l_szOption = GetInput(13, FALSE, 30 * 10);
Run Code Online (Sandbox Code Playgroud) 我不明白这里发生了什么
class A{};
class B : A {};
void func(A&, bool){}
void func(B&, double){}
int main(void)
{
B b;
A a;
bool bo;
double d;
func(b, bo);
}
Run Code Online (Sandbox Code Playgroud)
编译时,Visual 2010会在线提供此错误 func(b, bo);
2 overloads have similar conversions
could be 'void func(B &,double)'
or 'void func(A &,bool)'
while trying to match the argument list '(B, bool)'
Run Code Online (Sandbox Code Playgroud)
我不明白为什么bool参数不足以解决过载问题.我已经看到了这个问题,并且在接受的答案中指出,bool应该更喜欢bool重载.在我的情况下,我看到第一个参数不足以选择好的函数,但为什么第二个参数不能解决模糊性?