Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.95/21: Рейтинг темы: голосов - 21, средняя оценка - 4.95
 Аватар для Goose45
2 / 2 / 1
Регистрация: 30.07.2016
Сообщений: 118

Как правильно структурировать файлы проекта?

25.08.2018, 18:30. Показов 4617. Ответов 3

Студворк — интернет-сервис помощи студентам
Здравствуйте, у меня есть один вопрос, как правильно структурировать файлы проекта, например я видел в некоторых проектах, примерно следующие...

/Project_name/misc/build.sh
/Project_name/src/main.cpp
/Project_name/src/Class_name/Class.cpp
/Project_name/src/Class_name/Class.hpp

Если это правильно, то тогда как оформить то что лежит в папке класс.

Class.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
#include "Class.hpp"
 
MPU::MPU(){
    addrDevDec = wiringPiI2CSetup(ADDR_DEVICE);
}
 
int MPU::getAddrDevDec(){
    return addrDevDec;
}
 
//.....
Class.hpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#pragma once
#ifndef IN_MPU
#define IN_MPU
 
#include <wiringPiI2C.h>
#include <wiringPi.h>
 
#define ADDR_DEVICE 0x68 //I2C_ADDR
 
class MPU{
    private:
        int addrDevDec;
 
        struct raw_data{
            float raw_w;
            float raw_x;
            float raw_y;
            float raw_z;
        }axis;      
 
    public:
        MPU();
        
        int getAddrDevDec();
        float getRawW();
        float getRawX();
 
//....
И вообще, правильно ли, выносить определение методов из класса в отдельный файл ?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.08.2018, 18:30
Ответы с готовыми решениями:

Как правильно структурировать проэкт с++ ?
Столкнулся с такой проблемкой, касающейся подключения заголовочных файлов в с++: Если посмотреть заголовочные файлы, к примеру пусть...

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

Как правильно структурировать программу
У меня есть повторяющаяся процедура (или функция) Как правильно структурировать программу. Наверное, эту повторяющуюся процедуру выделить...

3
 Аватар для QuakerRUS
1469 / 1010 / 456
Регистрация: 30.10.2017
Сообщений: 2,799
25.08.2018, 19:08
Цитата Сообщение от Goose45 Посмотреть сообщение
то тогда как оформить то что лежит в папке класс
Что вы имеете ввиду? Все же оформлено уже.

Цитата Сообщение от Goose45 Посмотреть сообщение
И вообще, правильно ли, выносить определение методов из класса в отдельный файл ?
Да. В этом случае при перекомпиляции проекта, вам не придется повторно перекомпилировать методы, если в них не было изменений. Как следствие быстрее компилируется проект.
1
 Аватар для mvngr
225 / 189 / 98
Регистрация: 15.04.2018
Сообщений: 718
25.08.2018, 22:19
Цитата Сообщение от Goose45 Посмотреть сообщение
как правильно структурировать файлы проекта
С моей точки зрения существует множество подходов, и ни один из них не является правильным. Ты можешь это делать как хочешь, главное соблюдать логику, чтобы потом было легче организовывать доступ к чему-либо, да и чтобы дирректории назывались прозрачно
1
19 / 17 / 7
Регистрация: 18.09.2017
Сообщений: 96
26.08.2018, 08:53
Лучший ответ Сообщение было отмечено Goose45 как решение

Решение

Организовывай проект вот так:

Code
1
2
3
4
5
6
7
8
9
10
11
12
└── project
    ├── CMakeLists.txt
    ├── Makefile
    ├── readme.md
    ├── doc
    │   └── design.md
    ├── include
    │   └── mpu.hpp
    ├── src
    │   └── mpu.cpp
    └── test
        └── mpu.t.cpp
Т.е.:
  • make-файлы, солюшены - в корень проекта
  • заголовочные файлы - в include
  • исходники (cpp) - в src
  • тесты - в test
  • документацию - в doc

Далее, hpp/cpp пара файлов обычно делается на каждый класс, в hpp - определение, в cpp - реализация. Inline методы остаются в hpp.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.08.2018, 08:53
Помогаю со студенческими работами здесь

Подскажите, какие файлы после сборки проекта отвечают за восстановление проекта .dpr в Delphi 7
Подскажите, какие файлы после сборки проекта отвечают за восстановление .dpr в Delphi 7, если он в процессе работы был потерян? Нет времени...

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

Папки (файлы) проекта как их использовать?
Создаю в проекте папку, перемещаю в неё файлы (xxx.jpg) При перестроении проекта создаются соответствующие файлы и папки в корне проекта....

Как организованы файлы проекта в Android?
К примеру public void Click(View view){ AlertDialog.Builder builder; AlertDialog alertDialog; builder =...

Как правильно сохранить изображение в корень проекта?
подскажите пожалуйста как грамматически правильно будет прописать картинке путь в папку с проектом по умолчанию? код : using System; ...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Камера 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, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru