Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
Рэмбо комнатный
 Аватар для GeFacle
103 / 103 / 99
Регистрация: 05.03.2017
Сообщений: 511

разбиение кода на заголовочники

10.07.2017, 21:59. Показов 1117. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
пытаюсь разбить этот код по заголовочникам, но после разбиения выдает ошибку и даже не одну, а 16, хотя если все в куче, то никаких ошибок не наблюдается (для каждого класса свой заголовочник)
Код
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
#include <string>
#include <vector>
#include <iostream>
#include <cstdlib>
 
using namespace std;
 
class studying
{
private:
    string name;
    string surname;
    int age;
public:
    studying() { name = surname = ""; age = 0; }
    studying(string n, string s, int a)
    {
        name = n; surname = s; age = a;
    }
    string get_name() { return name; }
    string get_surname() { return surname; }
    int get_age() { return age; }
    virtual string toString()
    {
        return
            "\n " + (string)"Name: " + name +
            "\n " + "Surname: " + surname +
            "\n " + "Age: " + to_string(age);
    }
};
 
class pupil :public studying
{
private:
    int Class;
    char classMark;
public:
    pupil() :studying() { Class = 0; classMark = ' '; }
    pupil(string n, string s, int a, int c, char cm) :studying(n, s, a)
    {
        Class = c; classMark = cm;
    }
    string toString()
    {
        return
            "\n\t" + (string)"Name: " + get_name() +
            "\n\t" + "Surname: " + get_surname() +
            "\n\t" + "Age: " + to_string(get_age()) +
            "\n\t" + "Class: " + to_string(Class) + classMark;
    }
};
 
class student :public studying
{
private:
    int cours;
    string nameCours;
public:
    student() :studying() { cours = 0; nameCours = ""; }
    student(string n, string s, int a, int c, string nc) :studying(n, s, a)
    {
        cours = c; nameCours = nc;
    }
    string toString()
    {
        return
            "\n   " + (string)"Name: " + get_name() +
            "\n   " + "Surname: " + get_surname() +
            "\n   " + "Age: " + to_string(get_age()) +
            "\n   " + "Cours: " + to_string(cours) +
            "\n   " + "Name of cours: " + nameCours;
    }
};
 
string className(studying *ob)
{
    return (string)(&typeid(*ob).name()[6]);
}
 
class conf
{
private:
    vector<studying*> cont;
public:
    conf() {}
    ~conf() { cont.clear(); }
    void add_studying(studying *temp) { cont.push_back(temp); }
    void show_studying()
    {
        cout << "There are " << cont.size() << " studying." << endl;
        for (int i = 0; i < cont.size(); i++)
        {
            cout << className(cont[i]) << ": ";
            cout << cont[i]->toString() << endl;
        }
    }
};
 
int main()
{
    setlocale(0, "");
    studying *first = new studying("Ыыы", "кукусик", 13);
    student *second = new student("Садаам", "Приветик", 18, 2, "Информационные технологии");
    pupil *third = new pupil("Николай", "Путин ", 17, 11, 'А');
    conf Conference;
    Conference.add_studying(first);
    Conference.add_studying(second);
    Conference.add_studying(third);
    Conference.show_studying();
    system("pause");
    return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.07.2017, 21:59
Ответы с готовыми решениями:

Разбиение кода на лексемы
Добрый день. Интересует такой вопрос. Какие средства могут помочь при написании программы анализа исходного кода java?Необходимо исходный...

простая сложность. разбиение кода (+)
Хочу реализовать код программы по следующему принципу. Например задан main.cpp: main.cpp if сложение или вычитание? // задача...

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

7
68 / 51 / 27
Регистрация: 27.04.2015
Сообщений: 203
10.07.2017, 22:17
Так ты приведи код согласно тому, как ты его пытаешь разбить, как ошибку искать-то?
PS Для примера
source.cpp
C++
1
2
3
4
5
#include "header1.h"
//...
int main(){
//...
}

header1.h
C++
1
2
3
4
5
#include <iostream>
using namespace std;
class studying{
//...
}
0
Рэмбо комнатный
 Аватар для GeFacle
103 / 103 / 99
Регистрация: 05.03.2017
Сообщений: 511
10.07.2017, 22:23  [ТС]
YarRainbow, сек, ща

main.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include "conference.h"
#include "student.h"
#include "pupil.h"
 
int main()
{
    setlocale(0, "");
    studying *first = new studying("Ыыы", "кукусик", 13);
    student *second = new student("Садаам", "Приветик", 18, 2, "Информационные технологии");
    pupil *third = new pupil("Николай", "Путин ", 17, 11, 'А');
    conf Conference;
    Conference.add_studying(first);
    Conference.add_studying(second);
    Conference.add_studying(third);
    Conference.show_studying();
    system("pause");
    return 0;
}
studying.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
24
#include <string>
 
using namespace std;
 
class studying
{
private:
    string name;
    string surname;
    int age;
public:
    studying() { name = surname = ""; age = 0; }
    studying(string n, string s, int a)
    {
        name = n; surname = s; age = a;
    }
    string get_name() { return name; }
    string get_surname() { return surname; }
    int get_age() { return age; }
    virtual string toString()
    {
        return "Here we are :)";
    }
};
pupil.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
24
25
#include "studying.h"
#include <string>
 
using namespace std;
 
class pupil :public studying
{
private:
    int Class;
    char classMark;
public:
    pupil() :studying() { Class = 0; classMark = ' '; }
    pupil(string n, string s, int a, int c, char cm) :studying(n, s, a)
    {
        Class = c; classMark = cm;
    }
    string toString()
    {
        return
            "\n\t" + (string)"Name: " + get_name() +
            "\n\t" + "Surname: " + get_surname() +
            "\n\t" + "Age: " + to_string(get_age()) +
            "\n\t" + "Class: " + to_string(Class) + classMark;
    }
};
student.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
24
25
26
#include "studying.h"
#include <string>
 
using namespace std;
 
class student :public studying
{
private:
    int cours;
    string nameCours;
public:
    student() :studying() { cours = 0; nameCours = ""; }
    student(string n, string s, int a, int c, string nc) :studying(n, s, a)
    {
        cours = c; nameCours = nc;
    }
    string toString()
    {
        return
            "\n" + (string)"Name: " + get_name() +
            "\n" + "Surname: " + get_surname() +
            "\n" + "Age: " + to_string(get_age()) +
            "\n" + "Cours: " + to_string(cours) +
            "\n" + "Name of cours: " + nameCours;
    }
};
conference.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
24
25
26
27
28
29
30
#include "studying.h"
#include <string>
#include <vector>
#include <iostream>
 
using namespace std;
 
string className(studying *ob)
{
    return (string)(&typeid(*ob).name()[1]);
}
 
class conf
{
private:
    vector<studying*> cont;
public:
    conf(){}
    ~conf() { cont.clear(); }
    void add_studying(studying *temp) { cont.push_back(temp); }
    void show_studying()
    {
        cout << "There are " << cont.size() + 1 << " studying." << endl;
        for (int i = 0; i < cont.size(); i++)
        {
            cout << className(cont[i]) << ": ";
            cout << cont[i]->toString() << endl;
        }
    }
};
0
68 / 51 / 27
Регистрация: 27.04.2015
Сообщений: 203
10.07.2017, 22:44
А я вот создал пустой проект, добавил файлы, закинул код и у меня сразу всё скомпилировалось

Вот и думай. Скидывай ошибки компилятора, где-то в проект неправильно добавилось, видимо.
PS А вот это
C++
1
2
3
#include <string>
 
using namespace std;
из всех заголовочных, кроме studying.h можно убрать
0
Рэмбо комнатный
 Аватар для GeFacle
103 / 103 / 99
Регистрация: 05.03.2017
Сообщений: 511
10.07.2017, 23:21  [ТС]
YarRainbow
Миниатюры
разбиение кода на заголовочники   разбиение кода на заголовочники  
0
68 / 51 / 27
Регистрация: 27.04.2015
Сообщений: 203
10.07.2017, 23:27
Лучший ответ Сообщение было отмечено GeFacle как решение

Решение

C++
1
#pragma once
во все хедеры в начале добавь
1
Рэмбо комнатный
 Аватар для GeFacle
103 / 103 / 99
Регистрация: 05.03.2017
Сообщений: 511
10.07.2017, 23:30  [ТС]
YarRainbow, внатуре, ты прав, спасибо!)
1
Велосипедист...
 Аватар для Mournful Max
353 / 220 / 73
Регистрация: 15.12.2015
Сообщений: 785
10.07.2017, 23:44
GeFacle, ты несколько раз подряд включаешь studying.h в main.cpp, тем самым, пытаясь переопределить класс, который находится в первом.
#pragma once вроде не кроссплатформенная.
Почитай про include guard.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.07.2017, 23:44
Помогаю со студенческими работами здесь

создать функцию на основе кода (разбиение строки на отрезки)
Здравствуйте уважаемые программисты. Мне нужна Ваша помощь. Есть небольшой код программы, суть которой в следующем. На входе есть строка....

Разбиение кода на взаимосвязанные части
Всем доброго времени суток! Прошу извинить меня если мой вопрос окажется сильно глупым, просто я не силен в работе в VS C++ (всего один...

Какие заголовочники нужны для подключения сокетов?
Всем привет! Какие заголовочные файлы нужно включить в код для реализации клиента и сервера на сокетах? В msdn нашел только два хидера:...

Vvisual studio 2015 не видит подключаемые заголовочники
буквально в соседнем проекте который создавался уже давно буст работает, новый создал, в свойствах проекта h-ники и библиотеки подключил -...

Разбиение кода на модули
Доброго времени суток! Вот есть такое задание. Алгоритмы вычисления s1 и p2 то я написал, но запутался с модулями, как правильно...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru