Форум программистов, компьютерный форум CyberForum.ru

C++

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.61
Delaar
2 / 2 / 0
Регистрация: 23.11.2009
Сообщений: 15
#1

Разбиение проекта на файлы - C++

05.09.2010, 22:13. Просмотров 2171. Ответов 15
Метки нет (Все метки)

Добрый вечер. Пишу проект на винапи, в нем есть несколько классов с обьявлением и определением. Хотелось бы вынести код каждого класса в отдельный файл для удобства чтения. Подскажите, как это правильно сделать. Если что - пишу на Dev-Cpp.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Andrew_Lvov
Эксперт С++
259 / 189 / 5
Регистрация: 19.08.2010
Сообщений: 758
Записей в блоге: 1
06.09.2010, 12:45     Разбиение проекта на файлы #2
Почитайте про директивы #include.
В двух словах - переносите код класса в отдельный файл, в другом файле, где этот класс используется, подключаете файл с классом с помощью директивы.
Delaar
2 / 2 / 0
Регистрация: 23.11.2009
Сообщений: 15
06.09.2010, 19:52  [ТС]     Разбиение проекта на файлы #3
Попробовал, выношу в *.h файл обьявление класса, сохраняя определение в main.cpp - работает. Если пробую вынести определение в отдельный *.сpp, вылезают ошибки - не видны глобальные переменные, уже обьявленные типы указываются несуществующими. Посмотрел в FAQ про инклюды - так и не понял в чем загвоздка. Может есть какие-то тонкости?
Andrew_Lvov
Эксперт С++
259 / 189 / 5
Регистрация: 19.08.2010
Сообщений: 758
Записей в блоге: 1
06.09.2010, 20:13     Разбиение проекта на файлы #4
Кидай файлы сюда.
Delaar
2 / 2 / 0
Регистрация: 23.11.2009
Сообщений: 15
06.09.2010, 21:46  [ТС]     Разбиение проекта на файлы #5
Выкладываю
Вложения
Тип файла: rar project.rar (11.4 Кб, 29 просмотров)
Andrew_Lvov
Эксперт С++
259 / 189 / 5
Регистрация: 19.08.2010
Сообщений: 758
Записей в блоге: 1
07.09.2010, 13:19     Разбиение проекта на файлы #6
Почему #include закоментированны ?
В каждом своём хедере в начале файла добавь
#pragma once

Добавлено через 40 секунд
2. В хедерах очень нежелательно использовать using namespace директивы.

Добавлено через 1 минуту
3. В файле инклудяться только те библиотеки, к-рые используются.
4. Глобальные переменные нужно оглашать там, где они используются.
Delaar
2 / 2 / 0
Регистрация: 23.11.2009
Сообщений: 15
07.09.2010, 20:42  [ТС]     Разбиение проекта на файлы #7
Попробовал с вашими указаниями, все равно не работает, как задумано.
Вот рабочий вариант, но в нем определение класса FUEL - лежит в main.cpp c 50 по 205 строку.

Если можно, для примера - перенесите определение FUEL в fuel.cpp, а с остальным я разберусь.
Вложения
Тип файла: rar project2.rar (10.9 Кб, 16 просмотров)
Andrew_Lvov
Эксперт С++
259 / 189 / 5
Регистрация: 19.08.2010
Сообщений: 758
Записей в блоге: 1
07.09.2010, 20:51     Разбиение проекта на файлы #8
Цитата Сообщение от Delaar Посмотреть сообщение
Попробовал с вашими указаниями, все равно не работает, как задумано.
Что именно не работает ? Как работает и как должно ?
Delaar
2 / 2 / 0
Регистрация: 23.11.2009
Сообщений: 15
07.09.2010, 23:24  [ТС]     Разбиение проекта на файлы #9
При перемещении определения класса FUEL в fuel.cpp - выдаются сообщения ошибок, дескать класс FUEL не обьявлен, глобальные переменные, использованные в функциях - тоже выдаются как необьявленные, типы данных RECT и POINT - тоже необьявлены.
Рабочий вариант выложен выше, но там только обьявление класса вынесено в fuel.h, а определение оставлено в main.cpp. Мне же надо добиться, чтобы определение класса лежало в fuel.cpp..пока не удается.
Andrew_Lvov
Эксперт С++
259 / 189 / 5
Регистрация: 19.08.2010
Сообщений: 758
Записей в блоге: 1
07.09.2010, 23:43     Разбиение проекта на файлы #10
Delaar, давай так.
Ты скинешь сюда код как он должен выглядеть на твой взгляд, а я его скомпилю и скажу, где у тебя ошибки.
Переделывать за тебя я не хочу по простой причине - тебе будет легче, если ты делаешь сам, а тебе помогают в мелочах.

Среди сообщений о ошибках часто имееют значение только первая, на словах мне сложно сказать, что надо исправить.
Так что кидай некомпилируемый код сюда и мы его поправим
Delaar
2 / 2 / 0
Регистрация: 23.11.2009
Сообщений: 15
07.09.2010, 23:57  [ТС]     Разбиение проекта на файлы #11
Хотелось бы вот так:
Вложения
Тип файла: rar proj3.rar (11.3 Кб, 17 просмотров)
alex_x_x
бжни
2443 / 1648 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
07.09.2010, 23:59     Разбиение проекта на файлы #12
нет желания смотреть никакого, тем более обсуждалось 100500 раз

Delaar, выкладывай прямо на форум, если там очень много, то может быть какой-нибудь класс попроще взять и на его примере посмотреть?
Andrew_Lvov
Эксперт С++
259 / 189 / 5
Регистрация: 19.08.2010
Сообщений: 758
Записей в блоге: 1
08.09.2010, 00:47     Разбиение проекта на файлы #13
В fuel.cpp заинклудь fuel.h
Иначе в fuel.cpp об этом классе ничего не известно.

Добавлено через 3 минуты
fabs -> abs. Либо делай явные приведения типов аргуменов при вызове этой ф-ции.

Добавлено через 6 минут
Когда появляется ошибка при компиляции файла, что класс такой-то или функция неопределена - значит одно из трёх:
1. Ты забыл включить хедер, где эта функция/класс определён.
2. Ты ошибся в названии класса/функции.
3. Ты забыл такую класс/функцию обьявить.

Второе - почитай того же Страуструпа или книгу по программингу или посмотри примеры - глянь какой стиль у названия функций и классов.
ВСЕМИ_ЗАГЛАВНЫМИ_БУКВАМИ называются или структуры (что на мой взгляд нежелательно), либо макроопределения (обьявленные через #define), либо глобальніые константы (const double PI =3,1415).

Будут ещё проблемы, по к-рым нужна помощь - пиши.
Delaar
2 / 2 / 0
Регистрация: 23.11.2009
Сообщений: 15
08.09.2010, 00:50  [ТС]     Разбиение проекта на файлы #14
fabs и abs это пока что мелочи жизни
в fuel.cpp уже пробовал инклюдить fuel.h, попробовал еще раз, ошибки остаются прежние. Если кроме указанного ничего добавлять не надо, то может быть дело в компиляторе?
Andrew_Lvov
Эксперт С++
259 / 189 / 5
Регистрация: 19.08.2010
Сообщений: 758
Записей в блоге: 1
08.09.2010, 01:06     Разбиение проекта на файлы #15
Цитата Сообщение от Delaar Посмотреть сообщение
в fuel.cpp уже пробовал инклюдить fuel.h, попробовал еще раз, ошибки остаются прежние. Если кроме указанного ничего добавлять не надо, то может быть дело в компиляторе?
Кидай сюда название файла и процитируй первую ошибку.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.09.2010, 01:29     Разбиение проекта на файлы
Еще ссылки по теме:

C++ Разбиение программы на файлы
Как присоединить к h файлу проекта и к cpp проекта файлы из папки, лежащей с ними на одном уровне C++ Builder
C++ Разбиение проекта CodeBlocks на файлы
C++ Builder Разбиение проекта на подпрограммы

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Delaar
2 / 2 / 0
Регистрация: 23.11.2009
Сообщений: 15
08.09.2010, 01:29  [ТС]     Разбиение проекта на файлы #16
Поступил радикально
и обьявление, и определение теперь лежат в fuel.h, для меня это приемлимо, и главное - это работает
Andrew_Lvov - огромное вам спасибо, редко встречаются на форумах люди, детально разьясняющие молодым и зеленым даже такие, в сущности простые проблемы
Тему можно закрывать.
Yandex
Объявления
08.09.2010, 01:29     Разбиение проекта на файлы
Ответ Создать тему
Опции темы

Текущее время: 04:38. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru