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

Классы и обьекты - C++

Восстановить пароль Регистрация
 
Прокоп
0 / 0 / 0
Регистрация: 04.10.2012
Сообщений: 44
08.11.2012, 00:33     Классы и обьекты #1
Написать программу, в которой создаются и разрушаются объекты,
определенного пользователем класса. Выполнить исследование вызовов
конструкторов и деструкторов.
Написал програму,но при компиляции выходит каша
C++ (Qt)
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
#include <cstdlib>
#include <iostream>
 
using namespace std;
const int MNAME=20;
class worker{
      public:
      char name[MNAME];   //im'ya
      int number;            //nomer zeha
      int grade;            //rozryad
      
      
      void SetName(char*);
      int SetNumber(int);
      int SetGrade(int);      
      worker(char*,int,int);//ГЄГ®Г*òðóêòîð Г± ГЇГ*Г°Г*ìåòðГ*ìû
      worker(const worker&);
      worker();
      ~worker();
      void print();
      };
      
      worker::worker(char*NAME, int NUMBER, int GRADE)
      {
                             
           strcpy(name,NAME);
           number=NUMBER;
           grade=GRADE;
           cout<<"konstruktor c param. <worker> " <<  endl<<endl;
      }   
      
      void worker::SetName (char*NAME)
      {
           strcpy(name,NAME);    
           cout<<"konstruktor c param. <SetName> " <<endl<<endl;             
      }          
      
       int worker::SetNumber (int t)
      {
           number=t;  
           cout<<"konstruktor c param. <SetNumber> " <<endl<<endl;               
      }     
      
       int worker::SetGrade (int t)
      {
           grade=t;         
           cout<<"konstruktor c param. <SetGrade> " <<endl<<endl;                 
      }   
      
       void worker::print() 
      {
           cout<<name<<"   "<<number<<" nomer zeha, rozryad - "<<grade<<endl<<endl;     
           cout<<"konstruktor bez param. <print> " <<endl<<endl;             
      }      
       worker::~worker() 
      {
           cout<<"************************************************ " <<endl<<endl;             
      }      
 
     
      
int main(){  
    
    worker Me("Gayoviy",1,10) ;
    Me.print();
    Me.SetGrade(2);
    Me.print();
    worker work[3]={
           worker("Vlasenko",3,4),
           worker("Kornienko",9,7),
           worker("Prokov'ev",5,7)
    };
    
    void (worker::*pf)();
    pf=&worker::print;
    (work[2].*pf) ();
    system("PAUSE");
    return EXIT_SUCCESS;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.11.2012, 00:33     Классы и обьекты
Посмотрите здесь:

Обьекты C++
Классы и обьекты C++
C++ Обьекты и классы
Обьекты класса C++
C++ Классов и обьекты
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
I.M.
 Аватар для I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
08.11.2012, 00:48     Классы и обьекты #2
Конструктор у вас только это - worker::worker
Все остальные методы, для которых вы пишите "konstruktor", никакие не конструкторы, а обычные методы класса
Цитата Сообщение от Прокоп Посмотреть сообщение
C++
1
2
3
void (worker::*pf)();
pf=&worker::print;
(work[2].*pf) ();
А это вам зачем? в задании этого нет
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
08.11.2012, 00:52     Классы и обьекты #3
Цитата Сообщение от Прокоп Посмотреть сообщение
но при компиляции выходит каша
И в чём каша? int SetNumber(int)
int SetGrade(int) объявлены, как возвращающие int, а в реализациях возврата нет.
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
08.11.2012, 00:53     Классы и обьекты #4
1) легче написать пару строк сообщений об ошибках, чем читать эти 80 строк.
Цитата Сообщение от Прокоп Посмотреть сообщение
void worker::SetName (char*NAME)
* * * {
* * * * * *strcpy(name,NAME); * *
* * * * * *cout<<"konstruktor c param. <SetName> " <<endl<<endl;
2) это не конструктор, но ошибки тут нет, хм.
3) указатели на функции-члены редко видел, но сейчас почитал, вроде правильно.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
08.11.2012, 01:07     Классы и обьекты #5
Ещё вот так, чтобы работу деструктора увидеть:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
int main()
{  
    {
        worker Me("Gayoviy",1,10) ;
        Me.print();
        Me.SetGrade(2);
        Me.print();
    }
    {
        worker work[3]=
        {
               worker("Vlasenko",3,4),
               worker("Kornienko",9,7),
               worker("Prokov'ev",5,7)
        };
    
        void (worker::*pf)();
        pf=&worker::print;
        (work[2].*pf) ();
    }
    system("PAUSE");
    return EXIT_SUCCESS;
}
Yandex
Объявления
08.11.2012, 01:07     Классы и обьекты
Ответ Создать тему
Опции темы

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