如下面的代码,函数重载,在main函数中,std::string value = testa.getValue("hah"teasta");这一句代码提示失败,原因是无法从bool类型转换成std::string类型,求大神解决这个问题。
#include <iostream>
#include <string>
class TestA{
public:
std::string getValue(std::string name, std::string defaultValue);
bool getValue(std::string name, bool defaultValue);
};
std::string TestA::getValue(std::string name, std::string defaultValue){
if (name == "haha"){
return defaultValue;
}
return "Hello World";
}
bool TestA::getValue(std::string name, bool defaultValue){
if (name == "haha"){
return defaultValue;
}
return true;
}
int main(){
TestA testa;
std::string value = testa.getValue("haha", "testa");
if (value == "testa"){
printf("haha");
}
return 0;
}
http://www.cnblogs.com/haippy/archive/2012/12/27/2835358.html
看看真正的函数重载吧。。。
// return true;
return "TRUE";
只要参数列表不同,就可以达到函数重载的目的,所以你定义不同返回类型没有什么大碍。不巧的是,你在调用testa.getValue("haha", "testa")的时候,“testa”会隐式转换成bool类型,所以你会匹配到bool TestA::getValue(std::string name, bool defaultValue),自然会出现无法从bool向string转换的错误。