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

Проблема с классом Вектор - C++

Войти
Регистрация
Восстановить пароль
 
Malecha
16 / 16 / 1
Регистрация: 12.09.2009
Сообщений: 25
18.09.2009, 03:07     Проблема с классом Вектор #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
#include <vector>
#include <string>
#include <iostream>
 
using namespace std;
 
typedef vector <CDepartment*> department;
vector <CDepartment*>::iterator idep;
 
class CDepartment : public CPerson
{
private:
    string name_dep;
    
public:
    void Print ()
    {
        
            cout << "Maje bytu emp" << endl;
        
    }
    CDepartment ()
    {
        cout<< "Enter name of dep" << endl;
        cin>>this->name_dep;
    }
    friend ostream& operator<<(ostream &, CDepartment );
 
 
    
};
 
ostream& operator<<(ostream &stream, CDepartment dep )
    {
        stream<<dep.name_dep<<endl;
        return stream;
    }
 
void get_dep(department &dep)
{
    dep.push_back (new CDepartment);
    
}
 
void fill_database(department &d, person1 &p )
{
/*...*/
get_dep( d);
person1 pers(0);
}
 
void main ()
{
department dep(0) ;
fill_database(dep , pers );
 
cout << "List of departments: " <<endl; // В результате выводит 00365790
    for (int i =0; i<dep.size(); i++)
    {
        cout << dep[i] << endl;
    }
 
}
Заранее спасибо за отклики
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.09.2009, 03:07     Проблема с классом Вектор
Посмотрите здесь:

Проблема с классом и массивом char-ов C++
C++ Проблема с классом для линейного списка
C++ Работа с классом
C++ Ошибка с классом.
C++ Работа с классом
работа с классом C++
C++ программа с классом
C++ Работа с классом и объектом Вектор
C++ Задача с классом
C++ Вектор с классом должен получить класс (?)
Ошибка с классом в C++ C++
Работа с классом C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ёрик
46 / 46 / 2
Регистрация: 07.01.2009
Сообщений: 298
18.09.2009, 07:35     Проблема с классом Вектор #2
Во-первых,чтобы прописать переименование типов
C++
1
typedef vector <CDepartment*> department;
нужно сначала объявить класс,т.к. не видит класс CDepartment(definiton):

C++
1
2
3
4
5
6
7
8
9
10
11
#include <vector>
#include <string>
#include <iostream>
 
using namespace std;
 
// объявили класс
class CDepartment;
 
typedef vector <CDepartment*> department;
...
Во-вторых,где базовый класс CPerson?Что за тип "person1"?Это класс?Если да,то где он??В-третьих,почему у тебя в конструкторе ВВОД ДАННЫХ?Это что такое??Для этого сущетсвует оператор ввода
C++
1
operator>>(const Value&T)l
.То есть,для того,чтобы создать объект,мы должны вводить что-то,а если у нас массив объектов?Это неправильный подход.В конструкторе ввод данных никогда не делают.Очень много ошибок.Полный код выложи(с базовым классом).
Почему итератор у тебя являлся глобальная переменная??А вообще что ты хочешь от программы?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// Неправильно, у тебя параметр функции - класс, а ты пользуешься им как будто
// это список или вектор.Метод push доступен для список,деков,векторов.
// И почему у тебя называется GET - ПОЛУЧИТЬ,а сам запихиваешь все в список??
// Судя по названию должен позвращать значение,но его нет вообще ))
//void get_dep(department &dep)
//{
//  dep.push_back (new CDepartment);
//
//}
 
// здесь не могу ничего сказать,т.к. не знаю,что такое person1.
//void fill_database(department &d, person1 &p )
//{
//  /*...*/
//  get_dep( d);
//  person1 pers(0);
//}
Malecha
16 / 16 / 1
Регистрация: 12.09.2009
Сообщений: 25
18.09.2009, 09:28  [ТС]     Проблема с классом Вектор #3
Я пишу курсовую работу Отдел кадров. Сюда закинула только часть кода. Все классы обявлены и прописаны в хедерах и подключены к мейн. Вот
полный код:
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
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
#include <vector>
#include <string>
#include <iostream>
#include "CFirma.h"
 
 
using namespace std;
 
typedef vector <CPerson> person1;
typedef vector <person1 * > person;
typedef vector <person *> dep1; 
typedef vector <CDepartment*> department;
 
 
vector <CDepartment*>::iterator idep;
//vector <pers * > ::iterator ipr;
//vector <person *>::iterator idp;
 
 
 ostream& operator<<(ostream &stream, CDepartment dep )
    {
        stream<<dep.name_dep<<endl;
        return stream;
    }
 
int menu()
{
    cout << "===============================" << endl << endl;
    cout << "1. Fill database" << endl;
    cout << "2. View database" << endl;
    cout << "3. Edit database" << endl;
    cout << "4. Search" << endl;
    cout << "5. Reports" << endl;
    cout << "6. Exit" << endl << endl;
    cout << "===============================" << endl << endl;
 
    int a;
    cin >> a;
    while (a<1||a>6)
    {
        cout << "Make your choice" <<endl;
        cin >> a;
    }
    return a;
}
 
void get_dep(department &dep)
{
    dep.push_back (new CDepartment);
    
 
    
 
}
 
void get_emp(vector <CPerson> &pers)
{
 
}
 
 
int menu_database()
{
    cout << "===============================" << endl << endl;
    cout << "1. Create department" <<endl;
    cout << "2. Create employee" << endl;
    cout << "3. Main menu" << endl << endl;
    cout << "===============================" << endl << endl;
    int a;
    cin >> a;
    while (a<1||a>3)
    {
        cout<< "Make your choice..." << endl;
        cin>>a;
    }
    return a;
}
 
 
 
void fill_database(department &d, person1 &p )
{
 
    
    
    cout<<"fill_database" <<endl;
one:
    int data = menu_database();
    switch (data)
    {
    case 1:
        get_dep( d);    
        goto one;
        break;
    case 2:
        get_emp(p );
        goto one;
        break;
    case 3:
        return ;
        
    }
 
    //return 0;
 
}
 
 
 
 
void view_database(vector <CDepartment*> &dep)
 
{
cout << "List of departments: " <<endl;
    for (int i =0; i<dep.size(); i++)
    {
        cout << dep[i] << endl;
    }
}
void edit_database(){}
void search(){}
void report(){}
void exit(){}
 
int quant_dep()
{
    return 5;
}
 
 
void main ()
{
    cout << "===============================================================" << endl;
    cout << "==                                                           ==" << endl;
    cout << "==                Welcome on our enterprise                  ==" << endl;
    cout << "==                                                           ==" << endl;
    cout << "===============================================================" << endl;
    cout << endl << endl;
 
 
    department dep(0) ;
    person1 pers(0);
start:
    int first = menu();
    
    
    switch (first)
    {
    case 1:
        fill_database(dep , pers );
        break;
    case 2:
        view_database(dep);
        break;
    case 3:
        edit_database();
        break;
    case 4:
        search();
        break;
    case 5:
        report();
        break;
    case 6:
        exit();
    }
    goto start;
 
}


CFirma.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <vector>
#include <string>
#include <iostream>
#include "CDepartment.h"
 
#pragma once
 
using namespace std;
 
class CFirma : public CDepartment
{
private:
    
public:
    virtual void Print ()=0;
    
};


CDepartment.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
31
#include <vector>
#include <string>
#include <iostream>
#include "CPerson.h"
 
#pragma once
 
using namespace std;
 
class CDepartment : public CPerson
{
private:
    string name_dep;
    
public:
    void Print ()
    {
        
            cout << "Maje bytu emp" << endl;
        
    }
    CDepartment ()
    {
        cout<< "Enter name of dep" << endl;
        cin>>this->name_dep;
    }
    friend ostream& operator<<(ostream &, CDepartment );
 
 
    
};


CPerson.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <string>
#include <iostream>
#include "CDirector.h"
#pragma once
 
using namespace std;
 
class CPerson : public CDirector
{
private:
    int id;
public:
    CPerson()
    {
        this->id = -1;
    }
    void Print () 
    {
        cout << "Printing" <<endl;
    }
};


CDirector.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 <vector>
#include <string>
#include <iostream>
#pragma once
 
using namespace std;
 
class CDirector
{
private:
    string name_dir;
public:
    CDirector ()
    {
        name_dir = "No name";
    }
    CDirector (string name_dir)
    {
        this->name_dir = name_dir;
    }
    virtual void Print ()
    {
        cout << "Your director " << name_dir << endl;
    }
};
novi4ok
549 / 502 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
18.09.2009, 20:40     Проблема с классом Вектор #4
лучше начать не с этого. расскажите, пожалуйста, логику иерархии ваших классов. что собой представляет класс "CDirector", например? почему "персон" от него произведен, а департамент произведен от персоны?
Yandex
Объявления
18.09.2009, 20:40     Проблема с классом Вектор
Ответ Создать тему
Опции темы

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