Literał łańcuchowy dopasowuje przeciążenie bool zamiast std :: string
Próbuję napisać klasę C ++, która ma kilka przeciążonych metod:
class Output
{
public:
static void Print(bool value)
{
std::cout << value ? "True" : "False";
}
static void Print(std::string value)
{
std::cout << value;
}
};
Powiedzmy, że nazywam tę metodę w następujący sposób:
Output::Print("Hello World");
to jest wynik
Prawdziwe
Dlaczego więc, gdy zdefiniowałem, że metoda może przyjmować wartości logiczne i łańcuchowe, czy używa przeciążenia boolowskiego, gdy przekazuję wartość nie-boolowską?
EDYCJA: Pochodzę ze środowiska C # / Java, więc całkiem nowy w C ++!