По вашему описанию ошибки появляются и исчезают в зависимости от того, где вы поместили функцию, это не имеет никакого отношения к числу перегрузок.Скорее, проблема в том, что вы пытаетесь вызвать перегрузку до ее объявления.
Когда у вас есть набор функций, которые все вызывают друг друга, как вы описываете (независимо от того, являются ли они перегрузками или имеют разные имена), вам обычно нужно сначала ОБЪЯВИТЬ все функции, а затем ОПРЕДЕЛИТЬ их позже, после того как все определения будут просмотрены.Обычно вы структурируете это так, что все объявления находятся в заголовочном файле (так что другие файлы и включают его), а все определения находятся в исходном файле (который включает заголовок), так что все это работает легко.Все становится более сложным, если у вас есть встроенные функции (которые обычно должны быть определены в заголовочном файле, чтобы быть встроенными во всех модулях компиляции), но общий шаблон одинаков - сначала ОБЪЯВЛЯЙТЕ все, а затем ОПРЕДЕЛЯЙТЕ все.
edit
где именно вы получаете сообщение об ошибке «нет соответствия перегрузки»?- вам нужно переместить ОПРЕДЕЛЕНИЕ, содержащее вызов, который получает эту ошибку ПОСЛЕ ДЕКЛАРАЦИИ функции кодирования (или переместить ЗАПИСЬ кодирования перед ОПРЕДЕЛЕНИЕМ с ошибкой).Пока ВСЕ ДЕКЛАРАЦИИ ДО ВСЕХ ОПРЕДЕЛЕНИЙ, заказ будет в порядке.