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

не могу понять ошибку - C++

Восстановить пароль Регистрация
 
Mr. Pyatachok
 Аватар для Mr. Pyatachok
8 / 8 / 0
Регистрация: 30.06.2011
Сообщений: 250
19.07.2011, 22:07     не могу понять ошибку #1
Народ, здарова, сижу над классами, конкретно наследование классов!
Компилятор выдает ошибку: [C++ Error] Unit1.cpp(143): E2285 Could not find a match for 'Body::Body(char *,shape,color,material)'

Объясните почему, ведь, вроде правильно.
Код ниже:
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
#include<iostream.h>
#include<math.h>
#include<conio.h>
#include<string.h>
 
 
enum shape{prizm,parallelepiped,cube,pyramid,cone,cylinder}; //глобальное перечисление
enum color{red,yellow,green,blue,white};
enum material{metal,wood,plastic,cardboard};
 
class Body
{
   private:
  char* name_obj;
  shape forma_obj;
  float H;
  float So;
  float Sb;
  float Sp;
  float V;
  float k;
  float P;
  float p;
  color    col_c;
  material mat_m;
 
   public:
  float get_P()
  {
    float P=p*V;
    return P;
  }
 
  float get_V()
  {
    float V=So*H*k;
    return V;
  }
 
 Body(char *name,shape forma,color c,material m,int K)
      {
        name_obj=new char[strlen(name)+1];
        strcpy(name_obj,name);
        forma_obj=forma;
        col_c=c;
        mat_m=m;
        k=K;
        switch(forma_obj)
              {
               case prizm:          cout<<"***********************************Призма.**************************************";
                                    k=1.0;
                                    break;
               case parallelepiped: cout<<"***********************************Параллелепипед.******************************";
                                    k=1.0;
                                    break;
               case cube:           cout<<"***********************************Куб.*****************************************";
                                    k=1.0;
                                    break;
               case pyramid:        cout<<"***********************************Пирамида.************************************";
                                    k=1.0/3.0;
                                    break;
               case cone:           cout<<"***********************************Конус.***************************************";
                                    k=1.0/3.0;
                                    break;
               case cylinder:       cout<<"***********************************Цилиндр.*************************************";
                                    k=1.0;
                                    break;
               default:cout<<"Неизвестная фигура.\n";
             }
         if (k!=0)
          {
            get_V();
          }
        switch(col_c)
             {
               case red:    cout<<"red";
                            break;
               case yellow: cout<<"yellow";
                            break;
               case green:  cout<<"green";
                            break;
               case blue:   cout<<"blue";
                            break;
               case white:  cout<<"white";
                            break;
               default: cout<<"Нет такого цвета.";
                        break;
             }
        switch(mat_m)
             {
               case metal:      cout<<"metal";
                                p=7.874;        //плотность железа
                                break;
               case wood:       cout<<"wood";
                                p=0.861;       //плотность дуба
                                break;
               case plastic:    cout<<"plastic";
                                p=1.235;       //плотность пластика
                                break;
               case cardboard:  cout<<"cardboard";
                                p=0.689;       //плотность картона
                                break;
               default: cout<<"Нет такого материала.";
                        break;
             }
           if(p!=0)
             {
               get_P();
             }
     }
 
 
  void Display()
 {
   cout<<"* Имя объекта - "<<name_obj<<"."<<endl;
   cout<<"* Форма объекта - "<<forma_obj<<"."<<endl;
   cout<<"* Площадь основания равна:          \tSo="<<So<<endl;
   cout<<"* Площадь боковой поверхности равна:\tSb="<<Sb<<endl;
   cout<<"* Площадь полной поверхности равна: \tSp="<<Sp<<endl;
   cout<<"* Объем обекта равен:               \tV="<<get_V()<<endl;
   cout<<"* Вес тела равен:                   \tP="<<get_P()<<endl;
   cout<<"********************************************************************************"<<endl<<endl;
 
 }
 
  ~Body()
  {  delete[]name_obj;  }
 
 
  void get_H(float H)
       {  this->H=H;    }
  void get_So(float So)
       {  this->So=So;  }
  void get_Sb(float Sb)
       {  this->Sb=Sb;  }
  void get_Sp(float Sp)
       {  this->Sp=Sp;  }
};
 
 class cl_prizm: public Body
{
  public:
  cl_prizm(char *name,shape forma,color c,material m,float H,float So,float Sb,float Sp):Body(name,forma,c,m)
 {
    get_H(H);
    get_So(So);
    get_Sb(Sb);
    get_Sp(Sp);
 
 }
};
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.07.2011, 22:07     не могу понять ошибку
Посмотрите здесь:

C++ Не могу понять ошибку
C++ Не могу понять ошибку
C++ Не могу понять ошибку в цикле for
Не могу понять ошибку C++
функции,не могу понять ошибку C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4237 / 2770 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
19.07.2011, 22:20     не могу понять ошибку #2
Сравни конструктор Body и как ты его вызываешь:
C++
1
2
3
Body(char *name, shape forma, color c, material m, int K){};//конструктор
////////////////////////////////////////////////////////////////////////////
Body(name,forma,c,m)//вызов
Mr. Pyatachok
 Аватар для Mr. Pyatachok
8 / 8 / 0
Регистрация: 30.06.2011
Сообщений: 250
19.07.2011, 22:55  [ТС]     не могу понять ошибку #3
спасибо, ну сейчас еще тупее вопрос, а как исправить
Paporotnik
383 / 227 / 7
Регистрация: 06.07.2011
Сообщений: 512
19.07.2011, 22:58     не могу понять ошибку #4
значение K пятым аргументом передавай. или пиши новый конструктор, где k не используется и не передается в него.
Mr. Pyatachok
 Аватар для Mr. Pyatachok
8 / 8 / 0
Регистрация: 30.06.2011
Сообщений: 250
19.07.2011, 23:09  [ТС]     не могу понять ошибку #5
стоять, если удалю это К то все норм и сам коэффициент же будет учитываться при рассчете, я правильно понимаю?
Paporotnik
383 / 227 / 7
Регистрация: 06.07.2011
Сообщений: 512
19.07.2011, 23:22     не могу понять ошибку #6
если тебе нужно учитывать коэффициент K, то почему ты не передаешь его как аргумент конструктору класса-родителя в строке 143:
C++
1
cl_prizm(char *name,shape forma,color c,material m,float H,float So,float Sb,float Sp):Body(name,forma,c,m)
если ты его удалишь из списка аргументов конструктора, то ты должен будешь свою переменную k инициализировать как-то иначе, т.к. переменной K уже не будет.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.07.2011, 23:29     не могу понять ошибку
Еще ссылки по теме:

C++ не могу понять ошибку
Не могу понять ошибку C++
Не могу понять ошибку C++

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

Или воспользуйтесь поиском по форуму:
Mr. Pyatachok
 Аватар для Mr. Pyatachok
8 / 8 / 0
Регистрация: 30.06.2011
Сообщений: 250
19.07.2011, 23:29  [ТС]     не могу понять ошибку #7
я тупой, покажите как переменную к всунуть в конструктор, я не понял, я недавно изучаю этот язык
Yandex
Объявления
19.07.2011, 23:29     не могу понять ошибку
Ответ Создать тему
Опции темы

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