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

Перегрузка операций - C++

Восстановить пароль Регистрация
 
RickyCastro
0 / 0 / 1
Регистрация: 30.10.2013
Сообщений: 29
04.11.2013, 22:13     Перегрузка операций #1
Всем привет! Помогите пожалуйста с перегрузкой операций. У меня есть вот 4-ая лаба
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
#include <iostream.h>
#include <conio.h>
#include <math.h>
#include <string.h>
using namespace std;
// 2 - vozrast 
// 3 - ves
// 4 - klass
class chelovek {
 
      private: 
               int i; 
                    
      public: 
      string arname[5];
      int ar[5];
      string name;
 int vozrast, ves;
 
      void setinfo (string name, int vozrast, int ves) {
      arname[1] = name;
      ar[2] = vozrast;
      ar[3] = ves; 
      ar[4]=0;    
               }
               
      void showinfo () {
 
               cout<<"Imya:"<<arname[1]<<endl;
                cout<<"Vozrast:"<<ar[2]<<endl;
                 cout<<"Ves:"<<ar[3]<<endl;
                if (ar[4]!=0) {   cout<<"Klass:"<<ar[4]<<endl; }
                   cout<<"_______________________"<<endl;
           }
 
      
      };
class shkolnik : public chelovek { 
      public: 
      int klass; 
      void setklass (int klass) {
           ar[4] = klass;
           }
  shkolnik operator++ (int)
    {
    shkolnik result;
    result.ar[4] = ar[4]++;
    return result;
    }
 
       
      };
int main () {
    string name;
    int ii,nn,k,i,n,ves,vozrast,id,klass,j;
    cout<<"vvedite kolichestvo obektov";
    cin>>nn;
    shkolnik *obj[nn];
    for (ii=1; ii<=nn; ii++) { 
        cout<<"OBJECT "<<ii<<endl;
        cout<<"________________________________";
    do { 
    cout<<endl<<"MENU: 1 - dobavlenie cheloveka 2 - dobavit klass   3 - vivod dannih 4 - vihod 5-perenesti v drugoi klass"<<endl;
  
    cin>>k;
    switch (k) { 
           case 1:
 
        cout<<"Vvedite imya"; 
        cin>>name;
        cout<<"vvedite vozrast";
        cin>>vozrast;
        cout<<"vvedite ves";
        cin>>ves;
        obj[ii]->setinfo(name, vozrast, ves);
        break;
    case 2:
        
 
    cout<<"v kakoi klass?";
    cin>>klass;
    obj[ii]->setklass(klass);
    break;
    
    case 3:
           obj[ii]->showinfo(); 
           break;
   case 5: 
    obj[ii]++;
    cout<<"ushpesho pereveden v drugoi klass";
    break;  
           }
 
       
} while (k!=4);
}
 getch();   
}
Суть моей 5-ой лабы добавить туда перергрузку операций. Никак не могу додумать как это сделать. Попробывал перегрузить операцию ++ в итоге программа обрывается когда данные вывожу после этой операции. Помогите пожалуйста сделать какую-нибудь здесь перегрузку операций.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.11.2013, 22:13     Перегрузка операций
Посмотрите здесь:

C++ Перегрузка операций
C++ Перегрузка операций << и >>
Перегрузка операций C++
перегрузка операций C++
C++ перегрузка операций
Перегрузка операций C++
C++ Перегрузка операций
C++ Перегрузка операций

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
d1skort
20 / 20 / 0
Регистрация: 10.02.2013
Сообщений: 75
05.11.2013, 03:58     Перегрузка операций #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
27
28
29
class chelovek
{
private:
    string name;
    int age;
    int weight;
public:
    // Префиксный инкремент возвращает значение после инкремента
    friend const chelovek& operator++(chelovek& c)
    {
        c.age++;
        return c;
    }
    // Постфиксный инкремент возвращает значение до инкремента
    friend const chelovek& operator++(chelovek& c, int)
    {
        chelovek old(c.age); // требуется конструктор
        c.age++;
        return old;
    }
    // Перегрузка вывода
    friend ostream& operator<<(ostream& stream, const chelovek& c)
    {
        cout << "Name: " << name << endl;
        cout << "Age: " << age << endl;
        cout << "Weight: " << weight << endl;
        return stream;
    }
};
jurok_85
226 / 209 / 70
Регистрация: 21.02.2013
Сообщений: 494
05.11.2013, 13:32     Перегрузка операций #3
Сильно не вглядывался в ваше задание.
Но по моему оператор++
C++
1
2
3
4
5
6
shkolnik operator++ (int)
    {
    shkolnik result;
    result.ar[4] = ar[4]++;
    return result;
    }
у вас неправильно построен, так как ++ должно быть перед ar[4].
C++
1
2
3
4
5
6
shkolnik operator++ (int)
    {
    shkolnik result;
    result.ar[4] = ++ar[4];
    return result;
    }
Yandex
Объявления
05.11.2013, 13:32     Перегрузка операций
Ответ Создать тему
Опции темы

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