У меня есть две функции для обработки ошибок возвращаемого значения:
static void handleError(int error, const std::string& message, bool bShowAll = false);
и
static void handleError(int error, const std::string& prefix, const std::string& message, bool bShowAll = false)
вызов этой функции, который у меня есть проблема, выглядит следующим образом:
handleError(errro, "moduleA", "query failed");
Теперь возникает проблема: приведенный выше вызов приводит к вызову первого варианта вместо второго с параметром передачи bShowAll, разрешенным в значение «истина». Я думаю, что const char [] совместим с типом bool.
Я попытался изменить порядок функций (используя предварительное объявление для второй), но это не помогло вообще. какие еще варианты предлагает С ++ для решения этой проблемы? (если бы все типы приведения типов не работали - использование другого типа, отличного от bool, например, enum-тип с enum-символами-эквивалентами для того, для чего предназначен bool, перешло в хорошую операцию. это открыло двери для этого, но сам MSVC 2012 не намекал на эту двусмысленность, несмотря на то, что я запускаю его с уровнем предупреждения до # 4.)
примечание: я думаю, что переполнение стека - это также обучение умению делать что-то приятное, умное, а также учиться у других: получить собственное понимание того, как все устроено в области компьютерных и компьютерных языков.