Мне было интересно, если считается плохой практикой иметь несколько классов в одном файле .cpp. У меня есть опыт работы в Objective-C, где это редко делается.
Это делает код менее читабельным, потому что вы обычно ожидаете, что определение класса будет в заголовке с тем же именем, а реализация в файле реализации с тем же именем.
На практике бывают случаи, когда класс является относительно небольшим, и тесно связанные между собой небольшие классы могут быть сгруппированы вместе, но это в каждом конкретном случае.
Как указывает другой ответ, это делает код менее читабельным.
Важно также учитывать область действия вложенного класса:
Вложенный класс объявляется в области действия другого класса. Имя
вложенного класса является локальным по отношению к окружающему классу. Если вы не используете
явные указатели, ссылки или имена объектов, объявления в
вложенный класс может использовать только видимые конструкции, включая имена типов,
статические члены и перечислители из включающего класса и глобальные
переменные.