2 / 2 / 0
Регистрация: 23.11.2009
Сообщений: 15
1

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

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

Author24 — интернет-сервис помощи студентам
Добрый вечер. Пишу проект на винапи, в нем есть несколько классов с обьявлением и определением. Хотелось бы вынести код каждого класса в отдельный файл для удобства чтения. Подскажите, как это правильно сделать. Если что - пишу на Dev-Cpp.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.09.2010, 22:13
Ответы с готовыми решениями:

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

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

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

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

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

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

Добавлено через 1 минуту
3. В файле инклудяться только те библиотеки, к-рые используются.
4. Глобальные переменные нужно оглашать там, где они используются.
0
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 Кб, 17 просмотров)
0
Эксперт С++
261 / 191 / 10
Регистрация: 19.08.2010
Сообщений: 760
Записей в блоге: 1
07.09.2010, 20:51 8
Цитата Сообщение от Delaar Посмотреть сообщение
Попробовал с вашими указаниями, все равно не работает, как задумано.
Что именно не работает ? Как работает и как должно ?
0
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
Эксперт С++
261 / 191 / 10
Регистрация: 19.08.2010
Сообщений: 760
Записей в блоге: 1
07.09.2010, 23:43 10
Delaar, давай так.
Ты скинешь сюда код как он должен выглядеть на твой взгляд, а я его скомпилю и скажу, где у тебя ошибки.
Переделывать за тебя я не хочу по простой причине - тебе будет легче, если ты делаешь сам, а тебе помогают в мелочах.

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

Delaar, выкладывай прямо на форум, если там очень много, то может быть какой-нибудь класс попроще взять и на его примере посмотреть?
0
Эксперт С++
261 / 191 / 10
Регистрация: 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
2 / 2 / 0
Регистрация: 23.11.2009
Сообщений: 15
08.09.2010, 00:50  [ТС] 14
fabs и abs это пока что мелочи жизни
в fuel.cpp уже пробовал инклюдить fuel.h, попробовал еще раз, ошибки остаются прежние. Если кроме указанного ничего добавлять не надо, то может быть дело в компиляторе?
0
Эксперт С++
261 / 191 / 10
Регистрация: 19.08.2010
Сообщений: 760
Записей в блоге: 1
08.09.2010, 01:06 15
Цитата Сообщение от Delaar Посмотреть сообщение
в fuel.cpp уже пробовал инклюдить fuel.h, попробовал еще раз, ошибки остаются прежние. Если кроме указанного ничего добавлять не надо, то может быть дело в компиляторе?
Кидай сюда название файла и процитируй первую ошибку.
1
2 / 2 / 0
Регистрация: 23.11.2009
Сообщений: 15
08.09.2010, 01:29  [ТС] 16
Поступил радикально
и обьявление, и определение теперь лежат в fuel.h, для меня это приемлимо, и главное - это работает
Andrew_Lvov - огромное вам спасибо, редко встречаются на форумах люди, детально разьясняющие молодым и зеленым даже такие, в сущности простые проблемы
Тему можно закрывать.
0
08.09.2010, 01:29
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.09.2010, 01:29
Помогаю со студенческими работами здесь

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

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

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

Разбиение проекта на .h
Эсть класс А от его наследую класс Б, в .h пишу #ifndef B_H #define B_H #include "A.h"...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru