Два конструктора с одинаковым параметром std::string имеют одинаковую сигнатуру: имена аргументов не различают перегрузки. Используйте именованные фабрики или разные типы.
Проблема с двумя конструкторами класса, принимающими std::string (путь к файлу и контент). Как исправить?
Два конструктора с одинаковым параметром std::string имеют одинаковую сигнатуру: имена аргументов не различают перегрузки. Используйте именованные фабрики или разные типы.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Два конструктора с одинаковым параметром std::string имеют одинаковую сигнатуру: имена аргументов не различают перегрузки. Используйте именованные фабрики или разные типы.
Наиболее понятный API: Document::fromFile(path) и Document::fromText(content). Имена прямо показывают действие и позволяют по-разному обрабатывать ошибки чтения и разбора.
Другой вариант — типы-обёртки FilePath и TextContent, либо явные tag-параметры. std::filesystem::path тоже может выделить путь, но нужно учитывать неоднозначные неявные преобразования при вызове строковым литералом. Не пытайтесь угадывать по содержимому строки: текст может выглядеть как путь, а файла может не существовать.