Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.04.2012, 17:24   #1
Митовей
Пользователь
 
Регистрация: 07.04.2012
Сообщений: 30
По умолчанию Разбиение программы на отдельные файлы

Возможно, повторюсь, так что извините. Не могу найти в интернете хоть что-то связанное с этой темой, поэтому прошу дать хоть какую-то информацию по этому поводу. Тобишь, как разделять программу на загаловочные файлы с отдельными сппшниками. Зарание, благодарю.
Митовей вне форума Ответить с цитированием
Старый 07.04.2012, 19:35   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А что за программа?
в хедерах описываются к примеру константы и описания функций, тела которых уже в соответствующем CPP сидят.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.04.2012, 20:21   #3
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А что за программа?
в хедерах описываются к примеру константы и описания функций, тела которых уже в соответствующем CPP сидят.
Я недавно начал приходить к выводу, что все что можно утопить в спп файле - нужно утопить в спп файле. А утопить можно почти все.

В хэлэре должно быть только то, что невозможно их хэдэра запихать в спп.

К слову, константы чуть меньше, чем все замичательно топяццо в спп файлах, и не захламляют декларативную часть хэдэра. Плюс бонус к скорости компиляции.
_Bers вне форума Ответить с цитированием
Старый 07.04.2012, 20:32   #4
Митовей
Пользователь
 
Регистрация: 07.04.2012
Сообщений: 30
По умолчанию

Вобщем говоря разбил я программу, но теперь возникла другая проблема. У меня есть три класса. Каждый класс в отдельном спп. Так вот в одном из этих классов создаются объекты тех двух классов. Проблема: не создаются объекты. Ошибка: недопустимый неполный тип.
Митовей вне форума Ответить с цитированием
Старый 07.04.2012, 21:11   #5
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от Митовей Посмотреть сообщение
Вобщем говоря разбил я программу, но теперь возникла другая проблема. У меня есть три класса. Каждый класс в отдельном спп. Так вот в одном из этих классов создаются объекты тех двух классов. Проблема: не создаются объекты. Ошибка: недопустимый неполный тип.
телепаты в отпуске.
_Bers вне форума Ответить с цитированием
Старый 07.04.2012, 21:18   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
_Bers
Я честно не знаю для чего сейчас хедеры в Си применяются...
Для описания функций из DLL... Для нее то исходника нет.
Цитата:
Митовей
Код в студию.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.04.2012, 21:53   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
что все что можно утопить в спп файле - нужно утопить в спп файле.
чето бредовый вывод, в хидерах только обьявления и публичные данные.
в cpp реализация.
и тогда нормально разбивается все на модули, а так же норм либы компилятся(а еще спокойно масками все компилиться).
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 07.04.2012, 22:04   #8
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
чето бредовый вывод, в хидерах только обьявления и публичные данные.
в cpp реализация.
и тогда нормально разбивается все на модули, а так же норм либы компилятся(а еще спокойно масками все компилиться).
Как данное сообщение противоречит моему выводу?
И что конкретно бредового в нем?
_Bers вне форума Ответить с цитированием
Старый 07.04.2012, 22:26   #9
Митовей
Пользователь
 
Регистрация: 07.04.2012
Сообщений: 30
По умолчанию

1 класс:

PHP код:
#include <stdlib.h>
#include <GL/glut.h>
#include "Transation.h"
#include "Place.h"

static int shoulder 0scaling = -100.0left_right 0.0up_down 60.00000;
static 
int shoul 0;

class 
place {
    
float xy;
    
float xUyU;
    
float xDyD;
public:
    
place();
    
place(float xfloat y);
    
void print();
    
inline int get_xU() {return xU;};
    
inline int get_yU() {return yU;};
    
inline int get_xD() {return xD;};
    
inline int get_yD() {return yD;};
    
friend void spit(place atransation b);
    
friend void spit(transation aplace b);
};

place::place()  {
    
060;
    
xU 0yU 58.5;
    
xD 0yD 62.5;
}

place::place(float xfloat y) {
    
this->xthis->y;
    
xU this->xyU = -this->5;
    
xD this->xyD = -this->5;
}

void place::print() {
   
glPushMatrix();
   
glTranslatef(left_rightup_downscaling);
   
glRotatef((GLfloatshoulder0.01.00.0);
   
glRotatef((GLfloatshoul1.00.00.0);
   
glTranslatef(x, -y0.0);
   
GLUquadricObjdisk1 gluNewQuadric();
   
gluDisk(disk1052016);
   
glTranslatef(0.00.0, -2.0);
   
GLUquadricObjdisk2 gluNewQuadric();
   
GLUquadricObjcilinder gluNewQuadric();
   
gluCylinder(cilinder5522016);
   
gluDisk(disk2052016);
   
glPopMatrix();

Заголовочный файл к нему:
PHP код:
#include "Transation.h"

class place
2 класс:

PHP код:
#include <stdlib.h>
#include <GL/glut.h>
#include "Place.h"
#include "Transation.h"

static int shoulder 0scaling = -100.0left_right 0.0up_down 60.00000;
static 
int shoul 0;

class 
transation {
    
float xy;
    
float xUyU;
    
float xDyD;
public:
    
transation() {x=0y=0;}
    
transation(float xfloat y);
    
void print();
    
inline int get_xU() {return xU;};
    
inline int get_yU() {return yU;};
    
inline int get_xD() {return xD;};
    
inline int get_yD() {return yD;};
    
friend void spit(place atransation b);
    
friend void spit(transation aplace b);
};

transation::transation(float xfloat y) {
    
this->xthis->y;
    
xU this->xyU = -this->0.75;
    
xD this->xyD = -this->0.75;
}

void transation::print() {
   
glPushMatrix();
   
glTranslatef(left_rightup_downscaling);
   
glRotatef((GLfloatshoulder0.01.00.0);
   
glRotatef((GLfloatshoul1.00.00.0);
   
glTranslatef(x, -y0.0);
   
glScalef(1.00.10.1);
   
glutSolidCube(15);
   
glPopMatrix();

Заголовочный файл к нему:

PHP код:
#include "Place.h"

class transation
Класс, который инициализирует объекты первых двух классов

PHP код:

#include <iostream>
#include "Place.h"
#include "Transation.h"
#include "Petri_Net.h"

using namespace std;

class 
petri_net {
    
int stepstep1step2stepistepj;
    
int ij;
    
int **tab1, **tab2;
public:
    
petri_net(int iint j);
    
    
void build();
    
inline int get_i() {return i;}
    
inline int get_j() {return j;}
    
friend istream &operator>>(istream &streampetri_net &obj);
};

petri_net::petri_net(int iint j) {
    
this->i;
    
this->j;
    
tab1 = new int*[this->j];
    for (
step=0step<this->jstep++) tab1[step] = new int[this->i];

    
tab2 = new int*[this->i];
    for (
step=0step<this->jstep++) tab2[step] = new int[this->j];
}

istream &operator>>(istream &streampetri_net &obj) {
    
cout << "Заполните таблицы инцидентности\n";
    
cout << "Первая таблица:\n";
    for (
obj.step1 0obj.step1<obj.jobj.step1++)
        for (
obj.step2 0obj.step2<obj.iobj.step2++) stream >> obj.tab1[obj.step1][obj.step2];
    
cout << "Вторая таблица:\n";
    for (
obj.step1 0obj.step1<obj.iobj.step1++)
        for (
obj.step2 0obj.step2<obj.jobj.step2++) stream >> obj.tab2[obj.step1][obj.step2];
    return 
stream;
}

/*инициализация объектов*/
void petri_net::build() {
    
place a(2.08.0);
    
transation b(5.058.0);
    
a.print();
    
b.print();
    
spit(ab);

Загаловочный файл к нему:
PHP код:
#include "Place.h"
#include "Transation.h"

class petri_net
Митовей вне форума Ответить с цитированием
Старый 07.04.2012, 22:34   #10
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Если по простому, то:

В хэдэр:
Код:
class place {
	float x, y;
	float xU, yU;
	float xD, yD;
public:
	place();
	place(float x, float y);
	void print();
	inline int get_xU() {return xU;};    //ключевое слово inline здесь нафег не нужно.
	inline int get_yU() {return yU;};   //ключевое слово inline здесь нафег не нужно.
	inline int get_xD() {return xD;};   //ключевое слово inline здесь нафег не нужно.
	inline int get_yD() {return yD;};   //ключевое слово inline здесь нафег не нужно.
	friend void spit(place a, transation b);
	friend void spit(transation a, place b);
};
в спп:
Код:
place::place()  {
	x = 0; y = 60;
	xU = 0; yU = 58.5;
	xD = 0; yD = 62.5;
}

place::place(float x, float y) {
	this->x = x; this->y = y;
	xU = this->x; yU = -this->y + 5;
	xD = this->x; yD = -this->y - 5;
}

void place::print() {
   glPushMatrix();
   glTranslatef(left_right, up_down, scaling);
   glRotatef((GLfloat) shoulder, 0.0, 1.0, 0.0);
   glRotatef((GLfloat) shoul, 1.0, 0.0, 0.0);
   glTranslatef(x, -y, 0.0);
   GLUquadricObj* disk1 = gluNewQuadric();
   gluDisk(disk1, 0, 5, 20, 16);
   glTranslatef(0.0, 0.0, -2.0);
   GLUquadricObj* disk2 = gluNewQuadric();
   GLUquadricObj* cilinder = gluNewQuadric();
   gluCylinder(cilinder, 5, 5, 2, 20, 16);
   gluDisk(disk2, 0, 5, 20, 16);
   glPopMatrix();
}
С остальными - аналогично.
_Bers вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка и перенос данных в отдельные файлы Axell_ Microsoft Office Excel 4 30.08.2011 14:51
каким плеером мне воспроизвести видео и звук(отдельные файлы)вместе??? саша2121 Общие вопросы .NET 1 05.06.2011 22:25
Сохранение листов из 1 файла в отдельные файлы 2S2A1H Microsoft Office Excel 0 26.05.2011 10:14
Почему нельзя разбивать на отдельные файлы шаблонные функции и классы? lordius Visual C++ 22 08.07.2010 09:49