У меня есть класс FileProc, который выполняет операции ввода-вывода файла.В одном случае я объявил две функции (которые являются подфункциями для оператора = функции), обе из которых имеют решающее значение:
const bool WriteAmount(const std::string &Arr, const long S)
{
/* Do some string conversion */
return true;
}
const bool WriteAmount(const char Arr[], unsigned int S)
{
/* Do some string conversion */
return true;
}
Если я сделаю вызов с 'символьной строкой' для WriteAmount, он сообщитошибка неоднозначности - говорят, что она перепутана между WriteAmount для строки символов и WriteAmount для std :: string.Я знаю, что происходит под капотом - он пытается использовать конструктор std :: string для неявного преобразования строки char в std :: string.Но я не хочу, чтобы это происходило в случае WriteAmount (то есть, я не хочу, чтобы какое-либо неявное преобразование происходило внутри функций - учитывая, что каждое оптимизировано для каждой роли).
Мой вопрос, длянепротиворечивость, без изменения формата функции (т.е. IE не изменяет количество аргументов или в каком порядке они появляются) и без изменения стандартной библиотеки, есть ли способ предотвратить неявное преобразование в рассматриваемых функциях?
Я забылдобавить, желательно без приведения типов, так как это будет утомительно при вызовах функций и не удобно для пользователя.