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

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

Войти
Регистрация
Восстановить пароль
 
Malecha
17 / 17 / 1
Регистрация: 12.09.2009
Сообщений: 25
#1

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

18.09.2009, 03:07. Просмотров 505. Ответов 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
#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;
    }
 
}
Заранее спасибо за отклики
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.09.2009, 03:07
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Проблема с классом Вектор (C++):

Работа с классом и объектом Вектор - C++
Являюсь студентом,и по долгу учебы приступил к обучению премудростям &quot;оСей с двумя плюсами&quot;. И обломался. получил задание на...

Вектор с классом должен получить класс (?) - C++
Добрый вечер! 1) Подскажите, как быть. Есть у меня класс В. есть функция &quot;чтение из файла&quot; class B { int a;

Проблема с классом и массивом char-ов - C++
Есть класс, содержащий одномерный массив из char-ов и методы для работы с ним. Проблема возникла в самом начале - не получается корректно...

Проблема с классом для линейного списка - C++
Доброго времени суток! Начал писать класс для организации хранения данных в виде линейного списка, вот Header file:...

Наследуемым классом для комплексного числа объявить класс "радиус-вектор", имеющий данные "длина" и "угол" - C++
кто то напишите пожалуйста, вот программа: наследуемым классом для комплексного числа объявить класс &quot;радиус-вектор&quot;, имеющий данные...

Класс "вектор" с конструкторами, позволяющими создать нулевой вектор и вектор с произвольным числом элементов - C++
Привет! Задача следующая. Нужно реализовать класс &quot;вектор&quot; с конструкторами, которые позволяют создать нулевой вектор и вектор с...

3
Ёрик
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);
//}
0
Malecha
17 / 17 / 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;
    }
};
0
novi4ok
551 / 504 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
18.09.2009, 20:40 #4
лучше начать не с этого. расскажите, пожалуйста, логику иерархии ваших классов. что собой представляет класс "CDirector", например? почему "персон" от него произведен, а департамент произведен от персоны?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.09.2009, 20:40
Привет! Вот еще темы с ответами:

Проблема с классом - C++
Доброе времени суток...у меня проблема в создании класса - динамического массива! проблема в изминении определённого элемента и вывода на...

Создать иерархию классов вектор и безопасный вектор с проверкой выхода за пределы - C++
Создать иерархию классов вектор и безопасный вектор с проверкой выхода за пределы. Безопасный вектор определяет переменные нижний и верхний...

Почему матрица на вектор умножается быстрее чем вектор на матрицу? - C++
Почему матрица на вектор умножается быстрее чем вектор на матрицу?

матрица на вектор, вроде правильно, а вектор на матрицу? посмотрите пожалуйста? - C++
#include &lt;iostream&gt; #include &lt;iomanip&gt; #include &lt;cstdlib&gt; #include &lt;ctime&gt; using namespace std; int main() { ...


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

Или воспользуйтесь поиском по форуму:
4
Yandex
Объявления
18.09.2009, 20:40
Ответ Создать тему
Опции темы

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