Учитывая следующие методы:
// Method 1
void add(const std::string& header, bool replace);
//Method 2
void add(const std::string& name, const std::string& value);
Может показаться, что следующий код вызовет метод 1 вместо метода 2:
something.add("Hello", "World");
В итоге я создал еще один метод, который выглядит следующим образом:
//Method 3
void MyClass::add(const char* name, const char* value) {
add(std::string(name), std::string(value));
}
Это сработало. Поэтому может показаться, что когда метод принимает «строку в кавычках», он будет соответствовать в следующем порядке:
const char*
bool
std::string
Почему строка в кавычках должна обрабатываться как bool
перед std::string
? Это обычное поведение? Я написал приличное количество кода для этого проекта, и у меня не было других проблем с неправильной подписью метода ...