Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Bonch
0 / 0 / 0
Регистрация: 08.10.2011
Сообщений: 3
#1

Раздельная компиляция файлов в проекте. Межмодульное взаимодействие - C++

08.10.2011, 19:47. Просмотров 952. Ответов 4
Метки нет (Все метки)

Задан проект-модель почтового сервера
Созданы файлы: интерфейс сервера: server.h, интерфейс клиента-client.h, реализации сервера-server.cpp, клиента-client.cpp. Клиентская часть client.cpp компилируется, серверная часть server.cpp не компилируется. При компиляции файла server.cpp, компилятор ругается на строки list<client> servеd; и list<client> notservеd;. Компилятор gcc++, ide-geany.

server.h:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class server
{
    uint currentConnect;    //количество текущих соединений сервера
    list<client> servеd;
    list<client> notservеd;
    
    public:
    
    server()
    {
        currentConnect=0;
    }
    void run();
    void arrival();
    list<client>::iterator departure(list<client>::iterator p);
};
server.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <cstdlib>
#include <list>
#include <iterator>
typedef unsigned int uint;
using namespace std;
#include "client.h"
#include "server.h"
 
void server::run()
{
....
}
client.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
struct message
{
    uint adress;
    unsigned long int length;
    void getAdress();
    void getLength();
};
    
class client
{
    uint timeToHead;
    uint timeToTransm;
    bool endTransm;
    bool isConnect;
    uint sMsg;
    uint mMsg;
    uint bMsg;
    list<message> letters;
    public:
    friend class server;
    client();
    void run(); 
};
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.10.2011, 19:47
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Раздельная компиляция файлов в проекте. Межмодульное взаимодействие (C++):

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

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

Раздельная компиляция - C++
Здравствуйте, я перечитал на форуме информацию по этой теме, но пока что не сумел разобраться. У меня в проекте такие файлы: ...

Раздельная компиляция - C++
Пусть есть программа, которая состоит из 2 файлов. 1 файл: основной, там где main 2 файл: содержит некоторые функции Также есть...

раздельная компиляция - C++
Вот есть три файла: заголовочный файл с классом (.h), файл с реализацией методов класса (.cpp), и функцию main. Как, корректно, выполнить...

Раздельная компиляция - C++
В Гугле не забанен,нашел описание самого принципа,но конкретных примеров не нашел. Вопросы вот какие: 1) Если у меня есть класс,...

4
accept
4825 / 3246 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
09.10.2011, 13:37 #2
а что в client.cpp ?
0
Bonch
0 / 0 / 0
Регистрация: 08.10.2011
Сообщений: 3
09.10.2011, 20:36  [ТС] #3
client.cpp

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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include <ctime>
#include <cstdlib>
#include <list>
#include <iterator>
using namespace std;
typedef unsigned int uint;
#include "client.h"
 
client::client()
:timeToHead(4),
timeToTransm(),
endTransm(0),
isConnect(0),
sMsg(rand()%10),
mMsg(rand()%10),
bMsg(rand()%10)
{
    srand(time(0));
    for(uint i=0; i<sMsg; i++)
        
        {
            message m1;
            m1.adress=rand()%800;
            m1.length=rand()%2048;
            letters.push_back(m1);
        }
    for(uint j=0; j<mMsg; j++)
        {
            message m1;
            m1.adress=rand()%800;
            m1.length=(2+rand()%149)*1024;
            letters.push_back(m1);
        }
    for(uint k=0; k<sMsg; k++)
        {
            message m1;
            m1.adress=rand()%800;
            m1.length=(150+rand())*1024;
            letters.push_back(m1);
        }
}
 
void client::run()
{
    if(!isConnect)return;
    if(timeToHead)
    {
        timeToHead--;
        return;
    }
    if(timeToTransm)
    {
        timeToTransm--;
        return;
    }
    endTransm=1;
}
вот файл client.cpp,
я компилирую пока раздельно client.cpp и server.cpp
client.cpp компилируется, server.cpp нет. потом это всё будет обрастать функциями, программа будет усложняться, но по-любому в классе server должно быть 2 списка: обслуживаемых клиентов (servеd) и необслуживаемых (notservеd). и даже при отсутствии пока несущественных функций и переменных, компилятор уже именно на них и ругается, хотя вот например, при компиляции client.cpp всё нормально, хотя там тоже есть свой список. похоже что я что-то неправильно объявляю, не пойму что

 Комментарий модератора 
Используйте теги форматирования кода


Добавлено через 3 часа 8 минут
to accept:
спасибо за участие, разобрался сам. Тема закрыта
0
accept
4825 / 3246 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
10.10.2011, 02:16 #4
нужны ворота в заголовочных файлах
1
Bonch
0 / 0 / 0
Регистрация: 08.10.2011
Сообщений: 3
10.10.2011, 09:20  [ТС] #5
to accept:
спасибо за участие, разобрался. Тема закрыта
0
10.10.2011, 09:20
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.10.2011, 09:20
Привет! Вот еще темы с ответами:

Шаблоны и раздельная компиляция - C++
Здравствуйте! Если просто я пишу класс, например: class Test { private: int *pm; ... public: bool inc();

Раздельная компиляция и шаблоны - C++
Есть 3 файла с кодом: 1) foo.hpp template&lt;typename T&gt; class foo { public: T bar; foo(); ~foo(); };

Создание классов в С++. Раздельная компиляция - C++
При создании класса C++ в VS создается два файла, &quot;&lt;имя_класса&gt;.h&quot; и &quot;&lt;имя_класса&gt;.cpp&quot;, зачем они ? В каком сам класс писать? Простите за...

Раздельная компиляция шаблонов классов - C++
При разделении шаблона класса на .h и .cpp линковщик ругается. Неужели в C++17 ещё не пофиксили это недоразумение и придётся писать всё в...


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

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

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