Форум программистов, компьютерный форум, киберфорум
Наши страницы

C++

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

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

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

Добрый вечер. Пишу проект на винапи, в нем есть несколько классов с обьявлением и определением. Хотелось бы вынести код каждого класса в отдельный файл для удобства чтения. Подскажите, как это правильно сделать. Если что - пишу на Dev-Cpp.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.09.2010, 22:13
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Разбиение проекта на файлы (C++):

Разбиение проекта CodeBlocks на файлы - C++
В общем, такая проблема. Писал класс строки, вроде все работало, но вот когда начал пытаться разбить проект на файлы, вылез лог с...

Разбиение проекта на подпрограммы - C++ Builder
Есть достаточно объемный проект. Я хочу вынести определенные участки кода(например, функцию генерации базы правил) в отдельные .cpp файлы....

Как присоединить к h файлу проекта и к cpp проекта файлы из папки, лежащей с ними на одном уровне - C++ Builder
Добрый день, такая задача, Пользуюсь RAD 2010 Хочу в папке проекта создать папку lib/ и в неё поместить 2 файла: 1-й даже не...

Удалил все файлы obj из проекта - C++ Builder
бррр удалил(случайно) все файлы obj из проекта,теперь не хочет компилироваться ,как ему ресет сделать чтоб он не лез в эти файлы а собрал...

Пересылка проекта VC++ (какие файлы действительно нужны?) - Visual C++
Папка с несложным проектом VC+ может весить до сотни сотен мегабайт. Если надо послать проект по электронной почте, это не очень удобно....

Вызов exe одного проекта exe другого проекта - Visual C++
Есть проект, нажимая на вкладку меню, должен запускаться exe другого проекта. Как сделать? Помогите плиз.

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

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

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

Если можно, для примера - перенесите определение FUEL в fuel.cpp, а с остальным я разберусь.
0
Вложения
Тип файла: rar project2.rar (10.9 Кб, 16 просмотров)
Andrew_Lvov
Эксперт С++
259 / 189 / 5
Регистрация: 19.08.2010
Сообщений: 760
Записей в блоге: 1
07.09.2010, 20:51 #8
Цитата Сообщение от Delaar Посмотреть сообщение
Попробовал с вашими указаниями, все равно не работает, как задумано.
Что именно не работает ? Как работает и как должно ?
0
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..пока не удается.
0
Andrew_Lvov
Эксперт С++
259 / 189 / 5
Регистрация: 19.08.2010
Сообщений: 760
Записей в блоге: 1
07.09.2010, 23:43 #10
Delaar, давай так.
Ты скинешь сюда код как он должен выглядеть на твой взгляд, а я его скомпилю и скажу, где у тебя ошибки.
Переделывать за тебя я не хочу по простой причине - тебе будет легче, если ты делаешь сам, а тебе помогают в мелочах.

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

Delaar, выкладывай прямо на форум, если там очень много, то может быть какой-нибудь класс попроще взять и на его примере посмотреть?
0
Andrew_Lvov
Эксперт С++
259 / 189 / 5
Регистрация: 19.08.2010
Сообщений: 760
Записей в блоге: 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).

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

Разбиение проекта на файлы С++ - C++
Есть проект, нужно разбить на несколько файлов. Я то разбил, но есть ошибки непонятного содержания. Ошибка типа:...

Разбиение проекта на файлы - C++
Имеется проект, в котором несколько классов, путем проб и ошибок я разделил несколько классов по файлам, но вот что получается, для них...

Разбиение проекта на файлы - C++
Не знаю почему не получается разбить проект на файлы. Пишет всё время fatal error LNK1169: one or more multiply defined symbols found ...

Разбиение проекта на файлы - C++
Нужно разбить проект на файлы main.cpp, struct.cpp(здесь функции), struct.h(библиотеки, структура, прототипы функций). Сам пробовал -...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

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