Как правильно выносить код в разные файлы?
Сложность этого действия зависит от двух факторов:
- от качества кода на данный момент
- от качества того, что хотите получить на выход
По первому пункту, если у вас код грамотно разбит на классы и/или функции, то проблемы быть не должно. Как уже писали, просто вынесите все определения в хедеры, все остальное оставьте в .cpp. С другой стороны, я себе слабо представляю как написать грамотный код в одном файле.
Это приводит нас ко второму пункту. Для того, чтобы в итоге получился качественный продукт, необходимо логическое разделение на подзадачи. Если это выполнить грамотно это приведет к небольшим функциям, которые всегда делают что-то одно и/или к небольшим классам, которые отвечают за одну сущность. Такую структуру легко вынести в разные файлы.
Если же у вас много глобальных переменных и тп, то код тоже можно легко разнести в разные файлы, но с группировкой по файлам будет сложно, да и смысла в этом много не будет.
ПС. Не уверен, знаете ли вы, но не забывайте в каждом .h файле:#ifndef MY_AWESOME_HEADER_H
#define MY_AWESOME_HEADER_H
// код вашего файла
#endif
это убережет вас от последущих повторных включений этого файла.
Вам нужен рефакторинг. То, что Вы описали, говорит о том, что Ваш код далёк от совершенства.
Вам нужно для начала применить extract method, затем exctract class или подобные методы. После чего можно будет спокойно классы разнести по отдельным файлам.