Так и не понял, где в твоём коде "разбиение классов по файлам". File1 - это всё, что ли? Ну да ладно.
Вообще, этот процесс происходит так. В хедерах описываются только прототипы классов. То есть - указывается имя класса и от чего он наследуется (если есть), а затем перечисляются его члены-переменные и члены-функции. Для функций указываются только заголовки, без каких-либо деталей реализации. У тебя же внутри хедера описан список инициализации конструктора, и это неверно.
"Заголовок" функции - это её тип, сигнатура и дополнительные атрибуты (explicit, inline, virtual, const, throw(), = 0). То есть всё, что стоит перед её фигурными скобками. При этом, внутри хедеров нужно указывать полный заголовок функции, а вот внутри цпп-шников лишь частичный: из атрибутов функции указываются лишь те, что стоят справа от сигнатуры.
Начинать "выделение классов в файлы" стоит с самых мелких классов, которые не зависят от других. И лишь затем переходит к более крупным. Кстати, у тебя строка с инклудом File1.h почему-то стоит выше строки с прагмой - это неверно, поскольку у тебя в этом хедере содержится не стандартный класс, а твой собственный (который может меняться).