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

Неправельно работает конструктор(наверно) - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Перевести с QBasic на С++ http://www.cyberforum.ru/cpp-beginners/thread923395.html
Добрый день.Имеется рабочий код на QBasic,хочу переписать его на C++.Пока не получается,требуется ваша помощь. CLS INPUT "ширина общ", x INPUT "шир1", a INPUT "шир2 ", b INPUT "шир3 ", c...
C++ Кольцевой буфер Здравствуйте, уважаемые пользователи. Мне поставили задачу, которую я один решить не могу и поэтому обращаюсь за помощью к вам. Итак, у нас есть файл и мне нужно отфильтровать его. Но он просто... http://www.cyberforum.ru/cpp-beginners/thread923380.html
Перемещение содержимого из одного байта в другой байт C++
Здравствуйте все. Есть char A=3; char B=0; Как переместить физическое содержание битов из байта A в байт В, чтобы стало A=0 B=3;
Применение полученных знаний. Больная тема C++
Здравствуйте, уважаемые друзья! Хотел бы немножко поговорить с опытными людьми и узнать, как научиться применять свои знания, полученные в процессе обучения ? Вот предположим я - студент 4го курса,...
C++ Замена виртуальных функций шаблонами http://www.cyberforum.ru/cpp-beginners/thread923277.html
Такая задача - нужно заменить виртуальные функции шаблонами. Можно сделать так: struct Derived1; struct Derived2; template <typename T> struct Base { void f(); };
C++ Передача звука, приём Доброго времени суток. Вот задумал создать, что то на подобии голосового чата, но вот нет навыков в данной сфере. Может, кто то уже делал что то подобное, если можно подскажите. подробнее

Показать сообщение отдельно
alsav22
5421 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
16.07.2013, 13:12
Цитата Сообщение от лилиэн Посмотреть сообщение
а именно не удаляется обьект все еще в силе
Исправить ошибки, с выделением памяти под name, тоже ещё в силе.
Вот так сделайте, и будет удаляться:
C++
1
2
3
4
5
6
 ~node()
      {
             cout << "\ndeleting node" << endl;
             cout<<"\n";
             system("pause");
      }
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
int main()
{
    const node *first = new node;
    human h1;
    human h2(h1);
    human h3;
    h3 = h1;
    h1.displayinfo();
    h2.displayinfo();
    h3.displayinfo();
    system("color 1B");
    cout<<"\n";
    system("pause");
    system("cls");
    cout<<"==========================ENding PRogramm===========================";
    
    delete first;
    
    return 1;
}
Добавлено через 4 минуты
Цитата Сообщение от лилиэн Посмотреть сообщение
Вот переделала отношение между узлом и хуманом
А это?
Цитата Сообщение от alsav22 Посмотреть сообщение
В node должно быть поле human (данные узла). И должен быть ещё класс Список (сосотоящий из node) с полями: начало списка, конец списка; методами: создание списка, добавление узла в список, удаление узла из списка, удаление списка. Смотрите реализации списка структур.
Примерно так:
Кликните здесь для просмотра всего текста
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
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
#include<iostream>
#include<cstring>
using namespace std;
 
class human
{
      protected:
              int age;
              int heigh;
              char *name;
              static int copies;
              int obj_id;
      public:
             human();//konstructor
             human(human& h);//konstruktor kopirovania
             ~human();//destruktor 
             int checkid(int id);//проверка если идшка обьекта нужная нам 
             void displayinfo(); 
             human& operator=(human& h);//перегрузка присваивания 
};
 
int human::copies = 0;
 
class node
{
   public:
      human h;
      node* next;
        
      node() : next(NULL)
      {}
      
      ~node()
      {
             cout << "\ndeleting node" << endl;
             cout<<"\n";
             system("pause");
      }
     
};
 
class list
{
        node *first;
        node *last;
    
    public:
        list() : first(0), last(0)
        {}
        
        void addnode()
        {
            node* add = new node;    // новый элемент списка
            
            if (first == NULL)       // если список пустой, то в начало
                first = add;         // first начало списка
            else  last ->next = add; // если список не пустой, то в конец
            last = add;              // last конец списка
        }
 
        void show()
        {
            node* curr = first;
            while (curr)
            {
                curr ->h.displayinfo();
                curr = curr ->next;
            }
        }
        
        ~list()
        {
                node *temp;
                while (first != 0)
                {
                    temp = first ->next;
                    delete first;
                    first = temp;
                }
        }
};
 
 
int main()
{
    list L;
    
    cout << "\nEnter the number of items in the list: ";
    int n;
    cin >> n;
    
    for (int i = 0; i < n; ++i)
        L.addnode();
    
    L.show();
    
    system("color 1B");
    cout<<"\n";
    system("pause");
    system("cls");
    
    cout<<"==========================ENding PRogramm===========================";
    
    return 1;
}
 
//--------------------------Konstructor
human::human()
             {
                    cout<<"\n====================================================================";
                    copies++;
                    obj_id=copies;
                    cout<<"\ncreating new data with id="<<obj_id;
                    cout<<"\nEnter name:";
                    char tmp_name[20];
                    cin>>tmp_name;
                    int lengh;
                    lengh=strlen(tmp_name);
                    name= new char[lengh + 1];
                    strcpy(name,tmp_name);
                    cout<<"\nEnter age:";
                    cin>>age;
                    cout<<"\nEnter heigh:";
                    cin>>heigh;
                    cout<<"\nEntering data completed\n";
                    cout<<"\n====================================================================\n";
                    system("pause");
                    system("cls");
             }
//----------------------------copy constructor
human::human(human& h)
             {
                    cout<<"\n====================================================================";
                    copies++;
                    obj_id=copies;
                    cout<<"\ncreating new data with id="<<obj_id;
                    cout<<"\ncopying  information from id="<<h.obj_id;
                    int lengh;
                    lengh=strlen(h.name);
                    name= new char[lengh + 1];
                    strcpy(name,h.name);
                    age=h.age;
                    heigh=h.heigh;
                    cout<<"\nCopiing data compleeted!";
                    label1:
                    cout<<"\nChange smth?\n1)NO\n2)YES";
                    int choise;
                    cout<<"\nYour choise:";
                    cin>>choise;
                    switch(choise)
                    {
                                 case 1: break;
                                 case 2:
                                      {
                                               label2:
                                               cout<<"\nWhat should we change?";
                                               cout<<"\n1)Name";
                                               cout<<"\n2)Age";
                                               cout<<"\n3)Heigh";
                                               cout<<"\nYour choise?";
                                               int choise2;
                                               cin>>choise2;
                                               switch(choise2)
                                               {
                                                             case 1:
                                                                  {delete[] name;
                                                                   cout<<"\nEnter new name:";
                                                                   char tmp_name[20];
                                                                   cin>>tmp_name;
                                                                   int lengh;
                                                                   lengh=strlen(tmp_name);
                                                                   name= new char[lengh + 1];
                                                                   strcpy(name,tmp_name);
                                                                   break;
                                                                   }
                                                             case 2:
                                                                  {
                                                                    cout<<"\nEnter new age:";
                                                                    cin>>age;
                                                                    break;
                                                                  }
                                                             case3:
                                                                   {
                                                                     cout<<"\nEnter heigh:";
                                                                     cin>>heigh;
                                                                     break;
                                                                   }
                                                             default:
                                                                     {
                                                                           cout<<"no such option aviabe!!!";
                                                                           goto label1;
                                                                     }               
                                               }
                                               cout<<"\n Change smth else?\n1)NO\n2)YES";
                                               cout<<"\nYour choise?";
                                               int choise3;
                                               cin>>choise3;
                                               switch(choise3)
                                               {
                                                              case 1:break;
                                                              case 2:goto label2;break;
                                                              default:cout<<"No such option aviable!!rerurning to main prog!";
                                               }
                                               break;
                                      }
                                 default: 
                                      {
                                          cout<<"\nNo such option aviable!!";
                                          goto label1;
                                      }
                                 
                    }
                    cout<<"\nCopying data completed\n";
                    cout<<"\n====================================================================\n";
                    system("pause");
                    system("cls");
             }
//-------------------------------------Destruktor
 human::~human()
             {
                     copies--;
                     cout<<"\ndeleting object with id"<<obj_id;
                     cout<<"\n";
                     system("pause");
                     delete[] name;
             }   
//-------------------------------------Peregruzka prisvaivania
human& human::operator=(human& h)
{
       cout<<"\n====================================================================";
                    cout<<"\nassigning new data to id="<<obj_id;
                    cout<<"\ncopying  information from id="<<h.obj_id;
                    int lengh;
                    lengh=strlen(h.name);
                    delete name;
                    name= new char[lengh + 1];
                    strcpy(name,h.name);
                    age=h.age;
                    heigh=h.heigh;
                    cout<<"\nRefreshing data compleeted!";
                    label1:
                    cout<<"\nChange smth?\n1)NO\n2)YES";
                    int choise;
                    cout<<"\nYour choise:";
                    cin>>choise;
                    switch(choise)
                    {
                                 case 1: break;
                                 case 2:
                                      {
                                               label2:
                                               cout<<"\nWhat should we change?";
                                               cout<<"\n1)Name";
                                               cout<<"\n2)Age";
                                               cout<<"\n3)Heigh";
                                               cout<<"\nYour choise?";
                                               int choise2;
                                               cin>>choise2;
                                               switch(choise2)
                                               {
                                                             case 1:
                                                                  {delete[] name;
                                                                   cout<<"\nEnter new name:";
                                                                   char tmp_name[20];
                                                                   cin>>tmp_name;
                                                                   int lengh;
                                                                   lengh=strlen(tmp_name);
                                                                   name= new char[lengh + 1];
                                                                   strcpy(name,tmp_name);
                                                                   break;
                                                                   }
                                                             case 2:
                                                                  {
                                                                    cout<<"\nEnter new age:";
                                                                    cin>>age;
                                                                    break;
                                                                  }
                                                             case3:
                                                                   {
                                                                     cout<<"\nEnter heigh:";
                                                                     cin>>heigh;
                                                                     break;
                                                                   }
                                                             default:
                                                                     {
                                                                           cout<<"no such option aviabe!!!";
                                                                           goto label1;
                                                                     }               
                                               }
                                               cout<<"\n Change smth else?\n1)NO\n2)YES";
                                               cout<<"\nYour choise?";
                                               int choise3;
                                               cin>>choise3;
                                               switch(choise3)
                                               {
                                                              case 1:break;
                                                              case 2:goto label2;break;
                                                              default:cout<<"No such option aviable!!rerurning to main prog!";
                                               }
                                               break;
                                      }
                                 default: 
                                      {
                                          cout<<"\nNo such option aviable!!";
                                          goto label1;
                                      }
                                 
                    }
                    cout<<"\nCopying data completed\n";
                    cout<<"\n====================================================================\n";
                    system("pause");
                    system("cls");
                    return *this;
       
}
//------------------------------------Metodi obiekta
int human::checkid(int id)
{
            if(obj_id==id)
            return 1;
            else 
            return 0;
}
void human::displayinfo()
{
            cout<<"\n====================================================================";
            cout<<"\nDisplaying info fot id:"<<obj_id;
            cout<<"\nName:"<<name<<"\nAge:"<<age<<"\nHeigh:"<<heigh;
            cout<<"\n====================================================================";
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru