C++函数重载,参数类型不同,个数相同,返回值不同,重载使用出错。

如下面的代码,函数重载,在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转换的错误。