Строковый литерал соответствует перегрузке bool вместо std :: string
Я пытаюсь написать класс C ++, который имеет несколько перегруженных методов:
class Output
{
public:
static void Print(bool value)
{
std::cout << value ? "True" : "False";
}
static void Print(std::string value)
{
std::cout << value;
}
};
Теперь допустим, что я вызываю метод следующим образом:
Output::Print("Hello World");
это результат
Правда
Итак, почему, когда я определил, что метод может принимать логическое значение и строку, он использует логическую перегрузку, когда я передаю не логическое значение?
РЕДАКТИРОВАТЬ: Я пришел из среды C # / Java, так что совершенно новый для C ++!