Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/15: Рейтинг темы: голосов - 15, средняя оценка - 4.93
1 / 1 / 0
Регистрация: 24.07.2012
Сообщений: 8

Как правильно организовать большой проект?

24.07.2012, 09:48. Показов 2934. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В будущем хочу участвовать в разработке игр - начал изучать С++, вопрос тут такой, как правильно организовать структуру достаточно большого проекта? в учебниках, с примерами в 1-2 файла все просто, но когда их становиться больше - я начинаю путатся.

Например, пробую сделать примитивную 3Д модельку солнечной системы.
есть некий базовый класс 3Д объекта, ответственный за перемещение и отрисовку 3Д-модели.
есть несколько более конкретных классов - планеты, астероиды, и т. д (планируется сделать достаточно много объектов с разным поведением). все они используют базовый класс 3Д объекта.
Далее есть сам класс звездной системы, который, в свою очередь, использует классы планет и астероидов.

Каждый класс я описываю в отдельном файле:
Заголовок и реализация 3Д модели:
Object3D.h
Object3D.cpp
Астероид:
Asteroid.h - тут делаю #include Object3D.h
Asteroid.cpp - тут делаю #include Asteroid.h
Планта:
Planet.h - тут делаю #include Object3D.h
Planet.cpp - тут делаю #include Planet.h
Ну и система:
Plsystem.h - тут делаю #include Asteroid.h
#include Planet.h
Plsystem.cpp - тут делаю #include Plsystem.h

т.е. вроде бы получается, что по цепочке инклудов в файл Plsystem.cpp несколько раз линкуется Object3D.h, имеет ли это значение, или компилятор сам лишнее уберет?
И где можно почитать про правильную организацию достаточно сложных проектов?
Работаю в MSVS 2010
1
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.07.2012, 09:48
Ответы с готовыми решениями:

Как правильно организовать многофайловый проект?
Добрый вечер дорогой форум. Сразу скажу я новичек. Пишу курсовик, сроки, как всегда поджимают (семья, ремонт и две работы)... Но это...

Как скомпилировать большой проект из исходников?
Скачал исходники проекта и задался вопросом как их скомпилировать. Раньше компилировал только свои проекты по несколько страниц. Опыта в...

Как правильно организовать БД?
Есть база данных о предприятии. В ней есть данные об отделах и о сотрудниках. С сотрудниками всё понятно - сделаю столбец для id отдела, в...

5
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
24.07.2012, 10:48
Цитата Сообщение от gundos111 Посмотреть сообщение
т.е. вроде бы получается, что по цепочке инклудов в файл Plsystem.cpp несколько раз линкуется Object3D.h, имеет ли это значение, или компилятор сам лишнее уберет?
для этого в хедер-файлах ставят стражи включения
C++
1
2
3
4
5
6
7
#ifndef FILENAME__HPP
#define FILENAME__HPP
 
class Object3D {
//...
 
#endif //FILENAME__HPP
по макросу FILENAME__HPP препроцессор определит включался ли этот хедер-файл или нет
0
24.07.2012, 18:31

Не по теме:

А что лучше использовать - #pragma once или #ifndef #define?

0
 Аватар для Endiff
31 / 31 / 3
Регистрация: 19.05.2012
Сообщений: 67
24.07.2012, 18:34
Цитата Сообщение от yuron_477 Посмотреть сообщение
А что лучше использовать - #pragma once или #ifndef #define?
#pragma может не поддерживаться некоторыми компиляторами и системами. А второй вариант универсален.
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
25.07.2012, 04:40
Цитата Сообщение от gundos111 Посмотреть сообщение
Работаю в MSVS 2010
Компилировать проект пробовали?
0
1 / 1 / 0
Регистрация: 24.07.2012
Сообщений: 8
29.07.2012, 09:55  [ТС]
Спасибо за ответы, сделал проверки через
#ifndef
#define
#endif
Цитата Сообщение от alsav22 Посмотреть сообщение
Компилировать проект пробовали?
Да, проект и компилится и запускается, куда ж он денется.
Хотел узнать именно как избежать "избыточных" инклудов, или просто не обращать на них внимания, поскольку пока слабо представляю процес сборки ехешника.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.07.2012, 09:55
Помогаю со студенческими работами здесь

Как правильно организовать?
У меня есть несколько классов и у них практически одинаковые функции, которые отличается парой типов, как мне правильно сделать базовые...

Как правильно организовать БД?
Извините за глупый, наверное, вопрос. Я самоучка и только начинаю познавать науку... Как правильно организовать БД? Пример: БД из...

Как организовать правильно запрос
Доброго всем. Никак не могу понять, как ЭТО сделать... Есть таблица, есть форма с запросом. Идет запрос переменной "Find", но мне...

Как правильно организовать исключение
Подскажите пожалуйста, как правильно организовать такое исключение: Создан массив, если в нем есть "2", выводится сообщение о...

Как правильно организовать БД из 4-х таблиц?
ИСПОЛЬЗУЕТСЯ: Access Имеется три таблицы: - 00_tb1; - 00_tb2; - 00_tb3; Данные в таблицы поступают по...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru