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

ошибка, иерархия исключений, классы - C++

Восстановить пароль Регистрация
 
NektaRR
1 / 1 / 1
Регистрация: 26.02.2011
Сообщений: 53
04.12.2011, 23:05     ошибка, иерархия исключений, классы #1
//main.cpp

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
#pragma once
 
#include <iostream>
#include "chelovek.h"
#include "adult.h"
#include "exep.h"
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
 
using namespace std;
 
int main()
{
    int i,old,weight,id,numb;
    char name[40];
    Human *Humanoid[3]; 
    
    while(true)
{
        fflush(stdin);
        cout << "Name " << endl;
        gets(name); 
        cout << "Old " << endl;
        cin >> old;
        cout << "Weight " << endl;
        cin >> weight;       
        try
    {        
            if (old>=18)
            {
                cout << "passportID : ";
                cin >> id;
                Humanoid[0] = new Adult(name,old,weight,id);
            }
            else
                Humanoid[0] = new Human( name, old, weight);
        }
        catch(error & err)
        {
            cout << "Nevernoe zna4enie" << err.data << "\nVvedite zanovo:" << endl;
        continue;
    }
/*catch(error & e)
        {
            cout << "Nevernoe zna4enie" << e.what() << "\nVvedite zanovo:" << endl;
        continue;
    }*/
    break;
    }
    while(true)
    {
        fflush(stdin);
        cout << "Name " << endl;
        fflush(stdin);
        gets(name); 
        cout << "Old " << endl;
        cin >> old;
        cout << "Weight " << endl;
        cin >> weight;
      
        try
        {
            if (old>=18)
                {
                cout << "passportID : ";
                cin >> id;
                Humanoid[1] = new Adult(name, old, weight,id);
                    }
            else
                Humanoid[1] = new Human( name, old, weight);
    }
        catch(const error & err)
        {
            //e->what();
            cout << "Nevernoe zna4enie" << err.data << endl;
            continue;
        }
        break;
    }
    for (i=0;i<2;++i)
      {
          Humanoid[i]->PrintInfo();
          } 
    cout << "____________________________\nPereopredelenie vozrasta:" << endl;
    cout << "nomer osobi -";
    cin >> numb;
    cout << "Old " << endl;
    cin >> old;
    if (old>=18)
     {
        cout << "passportID : ";
        cin >> id;
        Human * temp = new Adult(Humanoid[numb-1]->get_name(),old,Humanoid[numb-1]->get_weight() , id);
        delete Humanoid[numb-1];
        Humanoid[numb-1] = temp;
     }
    else
    {
        Human * temp = new Human(Humanoid[numb-1]->get_name(),old,Humanoid[numb-1]->get_weight());
        delete Humanoid[numb-1];
        Humanoid[numb-1] = temp;
    }
    //delete Humanoid[2];
    Humanoid[numb-1]->PrintInfo();
    
       delete Humanoid[0];
       delete Humanoid[1];
    
       getch();
       return 0;
       }
//exep.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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#pragma once
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <iostream>
#include "chelovek.h"
#include "adult.h"
 
using namespace std; 
 
class error
  {
  public:
    int data;
    error(int d) : data(d)
    {
        data=d;
        //cout<<" <0"<<endl;
        //getch();
        //_exit(0);
    }
     error () throw();
     error (const error&) throw();
     virtual ~error () throw();
     virtual char* what () const throw();
  };
class errorOLD : public error
{
public:
    errorOLD(int b)
    {
        data=b;
    };
    char * what()
    {
        cout << "patsient ymer!!!"<<endl; 
        return "umer";
    }
};
class errorWEIGHT : public error
{
public:
    errorWEIGHT(int b)
    {
        data=b;
    };
    char * what() 
    {
        cout << "ves <0 anoreksia !!!"<<endl;
        return "anorecsia"; 
        
     } 
};
//chelovek.cpp

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
#pragma once
#include <iostream>
#include "chelovek.h"
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include "adult.h"
#include "exep.h"
//#include "exep.h"
using namespace std;
 
 
Human::Human()
{
    name = NULL;
    old = 0;
    weight = 0;
}
 
Human::Human(const Human &NextHuman)
{
    if(NextHuman.name)
    {
        name = new char [strlen(NextHuman.name)+1];
        strcpy(name, NextHuman.name);
    }
    else
        name = NULL;
    old = NextHuman.old;
    weight = NextHuman.weight;
        }
Human::Human(const char * name, const int old, const int weight)
{
    this->name = 0;
    set_name(name);
    set_old(old);
    set_weight(weight);
}
 
Human::~Human()
{
    if (name != NULL)
    {
        delete [] name;
        name = NULL;
    }
}
void Human::set_name(const char *_name)
{
    if (name != NULL) { delete [] name; } 
    name = new char [strlen(_name) + 1];
    strcpy(name, _name);
}
void Human::set_old(int _old) 
{
    if (_old < 0)
      {
          cout << "vozrast " << _old <<  " -1 patsient ymer!!!"<<endl;
          errorOLD err(_old);
        throw err.what();
      }
    old = _old;
}
void Human::set_weight(int _weight) 
{
    if (_weight < 0)
    {
        cout << "ves " << _weight <<  " anoreksia !!!"<<endl;
        errorWEIGHT err(_weight);
        throw err.what();
    }
    weight = _weight;
}
char * Human::get_name() 
{
    if(name != 0) 
        return name; 
    else
        return "0";
}
int Human::get_old() 
{
    return old;
}   
int Human::get_weight() 
{
    return weight;
}

выдает ошибки
error LNK2001: неразрешенный внешний символ ""public: __thiscall error::error(void)" (??0error@@QAE@XZ)"
error LNK2001: неразрешенный внешний символ ""public: virtual char * __thiscall error::what(void)const " (?what@error@@UBEPADXZ)"
еrror LNK2001: неразрешенный внешний символ ""public: virtual __thiscall error::~error(void)" (??1error@@UAE@XZ)"
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.12.2011, 23:05     ошибка, иерархия исключений, классы
Посмотрите здесь:

C++ классы и обработка исключений
C++ Создать классы: колесо, велосипед и автомобиль (иерархия или композиция)
Обработка исключений с пмощью структурированной обработки исключений C++
Классы. Непонятная ошибка C++
Классы, иерархия классов C++
C++ C++ классы и иерархия
Чем классы-исключения библиотеки могуть быть полезнее классов-исключений написанных своими руками C++
C++ Классы исключений

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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