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

C++

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

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

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

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

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

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

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

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

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

Разбиение проекта на .h - C++
Эсть класс А от его наследую класс Б, в .h пишу #ifndef B_H #define B_H #include "A.h" class B:public A{ ......} #endif ...

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Andrew_Lvov
Эксперт С++
259 / 189 / 5
Регистрация: 19.08.2010
Сообщений: 760
Записей в блоге: 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
Сообщений: 760
Записей в блоге: 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
Сообщений: 760
Записей в блоге: 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
Сообщений: 760
Записей в блоге: 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
Сообщений: 760
Записей в блоге: 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
бжни
2447 / 1652 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
07.09.2010, 23:59     Разбиение проекта на файлы #12
нет желания смотреть никакого, тем более обсуждалось 100500 раз

Delaar, выкладывай прямо на форум, если там очень много, то может быть какой-нибудь класс попроще взять и на его примере посмотреть?
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).

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

Разбиение однофайлового проекта на многофаовый (функции). C++ - C++
Есть код программы, которая позволяет ввести динамический массив, а затем 1. Упорядочивает элементы массива по возрастанию. 2. Находит...

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

Разбиение программы на файлы С++ - C++
Здравствуйте! У меня не получается линейный алгоритм своей программы разбить на два файла именно следующим образом. В первом будет...

глобальные static-переменные и разбиение на файлы - C++
Подскажите как связываются файлы при работе со static-переменными? К примеру если я хочу чтобы у меня static переменные были в одном...

Двухсвязный список (разбиение кода на файлы) - C++
Есть стандартный код реализации шаблонного двухсвязного списка: #include <iostream> using namespace std; template <typename...


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

Или воспользуйтесь поиском по форуму:
Andrew_Lvov
Эксперт С++
259 / 189 / 5
Регистрация: 19.08.2010
Сообщений: 760
Записей в блоге: 1
08.09.2010, 01:06     Разбиение проекта на файлы #15
Цитата Сообщение от Delaar Посмотреть сообщение
в fuel.cpp уже пробовал инклюдить fuel.h, попробовал еще раз, ошибки остаются прежние. Если кроме указанного ничего добавлять не надо, то может быть дело в компиляторе?
Кидай сюда название файла и процитируй первую ошибку.
Yandex
Объявления
08.09.2010, 01:06     Разбиение проекта на файлы
Ответ Создать тему
Опции темы

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