Форум программистов, компьютерный форум CyberForum.ru

Подключение сообственного класса через файл - C++

Восстановить пароль Регистрация
 
ozzy_b
2 / 2 / 0
Регистрация: 02.10.2012
Сообщений: 169
12.03.2013, 15:25     Подключение сообственного класса через файл #1
Я написал простенький код через классы, и мне бы хотелось описать сам класс в дополнительном файле и подключить его в главном файле. Но я незнаю как, и незнаю много ли придеться в моем коде всего переписывать.
Кликните здесь для просмотра всего текста
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
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
#include <iostream>
#include <string.h>
#include <conio.h>
 
using namespace std;
 
const int n = 5;
 
class person
{
    char last_name[15];
    char second_name[15];
    char first_name[15];
    char adress[15];
    char hender[15];
    char education[15];
    int date_of_born;
    public:
        void show(int i)
        {
            cout << "Person # " << i+1 << endl << "   Last Name " << last_name <<endl;
            cout << "   Second Name " << second_name <<endl;
            cout << "   First Name " << first_name <<endl;
            cout << "   Adress " << adress <<endl;
            cout << "   Hender " <<hender <<endl;
            cout << "   Education " << education <<endl;
            cout << "   Date of born " << date_of_born <<endl;
        }
        void input(int i)
        {
            cout <<"Person # " << i+1 << endl << "   Enter last_name: ";
            cin >> last_name;
            cout <<"   Enter second_name: ";
            cin >> second_name;
            cout <<"   Enter first_name: ";
            cin >> first_name;
            cout <<"   Enter adress: ";
            cin >> adress;
            cout <<"   Enter hender: ";
            cin >> hender;
            cout <<"   Enter education : ";
            cin >> education ;
            cout <<"   Enter date_of_born: ";
            cin >> date_of_born;
        }
        bool show_age(bool I, int age)
        {
            if (date_of_born > age)
                I = true;
            else
                I = false;
            return I;
        }
        bool show_edu(bool I)
        {
            if ( strcmp ("hight", education) == 0 )
                I = true;
            else
                I = false;
            return I;
        }
        bool show_hender(bool I)
        {
            if (strcmp ("male", hender) == 0)
                I = true;
            else
                I = false;
            return I;
        }
};
 
void main()
{
    person pers[n];
    while(1)
    {
        int key = 0;
        cout << "Enter command 1) enter; 2) show; 3) show_age; 4) show_edu; 5) show_hender: ";
        cin >> key;
        if (key == 0) 
            break;
        switch(key)
        {
            case 1: 
            {
                cout << "****** INPUT *******" << endl;
                for (int i=0; i<n; i++)
                {
                    pers[i].input(i);
                    cout << endl;
                }
            }
            break;
            case 2: 
            {
                cout << "****** SHOW ******" << endl;
                for (int i=0; i<n; i++)
                {
                    pers[i].show(i);
                    cout << endl;
                }
            }
            break;
            case 3:
            {
                cout << "****** SHOW AGE *******" << endl;
                int age;
                cout << "Enter age" << endl;
                cin >> age;
                bool I = false;
                for (int i=0; i<n; i++)
                {
                    I = pers[i].show_age(I, age);
                    if (I == true)
                        pers[i].show(i);
                }
            }
            break;
            case 4:
            {
                cout << "****** SHOW HIGHT EDUCATION *******" << endl;
                bool J = false;
                for (int i=0; i<n; i++)
                {
                    J = pers[i].show_edu(J);
                    if (J == true)
                        pers[i].show(i);
                }
            }
            break;
            case 5:
            {
                cout << "****** SHOW MALE *******" << endl;
                bool K = false;
                for (int i=0; i<n; i++)
                {
                    K = pers[i].show_hender(K);
                    if (K == true)
                        pers[i].show(i);
                }
            }
            break;
        }   
    }
    getch();
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
srg_btl
33 / 33 / 2
Регистрация: 21.02.2013
Сообщений: 90
12.03.2013, 15:35     Подключение сообственного класса через файл #2
Пример:
Был класс:
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
class Date
{
private:
    int m_nMonth;
    int m_nDay;
    int m_nYear;
 
    Date() { } // private default constructor
 
public:
    Date(int nMonth, int nDay, int nYear)
    {
        SetDate(nMonth, nDay, nYear);
    }
 
    void SetDate(int nMonth, int nDay, int nYear)
    {
        m_nMonth = nMonth;
        m_nDay = nDay;
        m_nYear = nYear;
    }
 
    int GetMonth() { return m_nMonth; }
    int GetDay()  { return m_nDay; }
    int GetYear() { return m_nYear; }
};
Разделяем его на два файла: один с расширением .h другой .cpp

Name.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
#ifndef NAME_H
#define NAME_H
 
class Date
{
private:
    int m_nMonth;
    int m_nDay;
    int m_nYear;
 
    Date() { } // private default constructor
 
public:
    Date(int nMonth, int nDay, int nYear);
 
    void SetDate(int nMonth, int nDay, int nYear);
 
    int GetMonth() { return m_nMonth; }
    int GetDay()  { return m_nDay; }
    int GetYear() { return m_nYear; }
};
 
 
#endif
Name.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include "Name.h"
 
// Date constructor
Date::Date(int nMonth, int nDay, int nYear)
{
    SetDate(nMonth, nDay, nYear);
}
 
// Date member function
void Date::SetDate(int nMonth, int nDay, int nYear)
{
    m_nMonth = nMonth;
    m_nDay = nDay;
    m_nYear = nYear;
}
SummerRain
 Аватар для SummerRain
325 / 324 / 17
Регистрация: 16.12.2012
Сообщений: 544
12.03.2013, 15:42     Подключение сообственного класса через файл #3
person.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class person
{
    char last_name[15];
    char second_name[15];
    char first_name[15];
    char adress[15];
    char hender[15];
    char education[15];
    int date_of_born;
public:
    void show(int i);
    void input(int i);
    bool show_age(bool I, int age);
    bool show_edu(bool I);
    bool show_hender(bool I);
};
person.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
58
59
60
#include "person.h"
#include <iostream>
 
using namespace std;
 
void person::show(int i)
    {
        cout << "Person # " << i+1 << endl << "   Last Name " << last_name <<endl;
        cout << "   Second Name " << second_name <<endl;
        cout << "   First Name " << first_name <<endl;
        cout << "   Adress " << adress <<endl;
        cout << "   Hender " <<hender <<endl;
        cout << "   Education " << education <<endl;
        cout << "   Date of born " << date_of_born <<endl;
    }
 
void person::input(int i)
    {
        cout <<"Person # " << i+1 << endl << "   Enter last_name: ";
        cin >> last_name;
        cout <<"   Enter second_name: ";
        cin >> second_name;
        cout <<"   Enter first_name: ";
        cin >> first_name;
        cout <<"   Enter adress: ";
        cin >> adress;
        cout <<"   Enter hender: ";
        cin >> hender;
        cout <<"   Enter education : ";
        cin >> education ;
        cout <<"   Enter date_of_born: ";
        cin >> date_of_born;
    }
 
bool person::show_age(bool I, int age)
    {
        if (date_of_born > age)
            I = true;
        else
            I = false;
        return I;
    }
 
bool person::show_edu(bool I)
    {
        if ( strcmp ("hight", education) == 0 )
            I = true;
        else
            I = false;
        return I;
    }
 
bool person::show_hender(bool I)
    {
        if (strcmp ("male", hender) == 0)
            I = true;
        else
            I = false;
        return I;
    }
main.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
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
#include <iostream>
#include <string.h>
#include <conio.h>
#include "person.h"
 
using namespace std;
 
const int n = 5;
 
 
 
void main()
{
    person pers[n];
    while(1)
    {
        int key = 0;
        cout << "Enter command 1) enter; 2) show; 3) show_age; 4) show_edu; 5) show_hender: ";
        cin >> key;
        if (key == 0) 
            break;
        switch(key)
        {
            case 1: 
            {
                cout << "****** INPUT *******" << endl;
                for (int i=0; i<n; i++)
                {
                    pers[i].input(i);
                    cout << endl;
                }
            }
            break;
            case 2: 
            {
                cout << "****** SHOW ******" << endl;
                for (int i=0; i<n; i++)
                {
                    pers[i].show(i);
                    cout << endl;
                }
            }
            break;
            case 3:
            {
                cout << "****** SHOW AGE *******" << endl;
                int age;
                cout << "Enter age" << endl;
                cin >> age;
                bool I = false;
                for (int i=0; i<n; i++)
                {
                    I = pers[i].show_age(I, age);
                    if (I == true)
                        pers[i].show(i);
                }
            }
            break;
            case 4:
            {
                cout << "****** SHOW HIGHT EDUCATION *******" << endl;
                bool J = false;
                for (int i=0; i<n; i++)
                {
                    J = pers[i].show_edu(J);
                    if (J == true)
                        pers[i].show(i);
                }
            }
            break;
            case 5:
            {
                cout << "****** SHOW MALE *******" << endl;
                bool K = false;
                for (int i=0; i<n; i++)
                {
                    K = pers[i].show_hender(K);
                    if (K == true)
                        pers[i].show(i);
                }
            }
            break;
        }   
    }
    _getch();
}
ozzy_b
2 / 2 / 0
Регистрация: 02.10.2012
Сообщений: 169
12.03.2013, 15:45  [ТС]     Подключение сообственного класса через файл #4
то в .h я просто копирую свой класс полностю(ничего неизменяя) и дописую #indef... а в .cpp что я делать должен? чтото неочень я понял етот ход
srg_btl
33 / 33 / 2
Регистрация: 21.02.2013
Сообщений: 90
12.03.2013, 15:52     Подключение сообственного класса через файл #5
По идее в хедере должны быть одявления, а в спп-файле реализация... Конечно это все можно сделать в хедере, но....
Можешь почитать об этом тут. Но в принципе статей в инете куча, в т.ч. на гусском
ozzy_b
2 / 2 / 0
Регистрация: 02.10.2012
Сообщений: 169
12.03.2013, 15:52  [ТС]     Подключение сообственного класса через файл #6
все, пеперь все понял. спасибо)
Yandex
Объявления
12.03.2013, 15:52     Подключение сообственного класса через файл
Ответ Создать тему
Опции темы

Текущее время: 01:35. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru