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

Возможно ли так?) - C++

Восстановить пароль Регистрация
 
Parushic
0 / 0 / 0
Регистрация: 18.09.2011
Сообщений: 27
17.10.2011, 19:28     Возможно ли так?) #1
Вот осваиваюсь с классами и конструкторами:
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
class pen{
private:
int marka, zvet, ves, gelevaya,dlinna, col;
float cost;
public:                                                
    pen(){}
    pen (int a, int b, int c, int d,int e);
    ~pen(){}
  int get_marka(){return marka;}
  int get_zvet(){return zvet;}
  int get_ves(){return ves;}
  int get_gelevaya(){return gelevaya;}
  int get_dlinna(){return dlinna;}
  void init(int a, int b, int c, int d, int e);
  void put_marka(int a){marka=a;}
  void put_zvet(int b){zvet=b;}
  void put_ves(int c){ves=c;}
  void put_gelevaya(int d){gelevaya=d;}
  void put_dlinna(int e){dlinna=e;}
        
public:
        cap(){}
        cap (int f);
        ~cap(){}
    int get_col(){return col;}
    void init(int f);
    void put_col(){col=f;}
    
    float price();};
        float cap::price()
    float pen::price()
Поправьте, подскажите?)

Добавлено через 8 минут
Как сделать второй конструктор? или куда его запихать?)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Сыроежка
Заблокирован
17.10.2011, 19:31     Возможно ли так?) #2
Цитата Сообщение от Parushic Посмотреть сообщение
Добавлено через 8 минут
Как сделать второй конструктор? или куда его запихать?)
Туда же, где у вас находится и первый конструтор! То есть вы можете определить конструктор внутри самого класса. Тогда он будет inline функцией. А можете определение конструктора вынести за пределы коасса в любое пространство имен, которое содержит в себе определение вашего класса. В вашем случае, как я понимаю, ваш класс обьъявлен в глобальном пространстве имен.

Зря вы только такие имена параметрам своего конструктора задали, как a, b, c, d и e. Не понятно, каким членам вашего класса эти параметры будут присваиваться.
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
17.10.2011, 19:39     Возможно ли так?) #3
Цитата Сообщение от Parushic Посмотреть сообщение
C++
1
2
void put_dlinna(int e){dlinna=e;} 
public:
По-моему между этими строчками чего-то вроде
C++
1
2
3
4
5
};
 
class cap {
    int f; // что бы оно не значило
    int col;
не хватает...
Parushic
0 / 0 / 0
Регистрация: 18.09.2011
Сообщений: 27
17.10.2011, 19:49  [ТС]     Возможно ли так?) #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
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
#include<iostream.h>
#include<stdio.h>
#include<conio.h>
class pen{
private:
int marka, zvet, ves, gelevaya,dlinna;
float cost;
public:                                                
    pen(){}
    pen (int a, int b, int c, int d,int e);
    ~pen(){}
  int get_marka(){return marka;}
  int get_zvet(){return zvet;}
  int get_ves(){return ves;}
  int get_gelevaya(){return gelevaya;}
  int get_dlinna(){return dlinna;}
  void init(int a, int b, int c, int d, int e);
  void put_marka(int a){marka=a;}
  void put_zvet(int b){zvet=b;}
  void put_ves(int c){ves=c;}
  void put_gelevaya(int d){gelevaya=d;}
  void put_dlinna(int e){dlinna=e;}
        
    float price();};
    float pen::price()
    
{cost = 0;
switch(marka){
  case 1:
  cost += 30;
  break;
  case 2:
  cost += 20;
  break;
  case 3:
  cost += 35;
  break;}
switch(zvet){
  case 1:
  cost += 20;
  break;
  case 2:
  cost += 20;
  break;}
switch(ves){
  case 1:
  cost += 10;
  break;
  case 2:
  cost += 15;
  break;}
switch(gelevaya){
  case 1:
  cost +=10;
  break;
  case 2:
  cost += 0;
  break;}
switch(dlina){
  case 1:
  cost += 10;
  break;
  case 2:
  cost += 20;
  break;
  case 3:
  cost += 30;
  break;}
    return cost;}
 
pen::pen(int a,int b, int c, int d, int e){
marka=a, zvet=b, ves=c, gelevaya=d, dlina=e;}
void pen::init(int a,int b, int c, int d, int e)
{marka=a, zvet=b, ves=c, gelevaya=d, dlina=e;}
 
 
int main(){ clrscr();
pen a;
 
int a1,b1, c1, d1, e1, p;
 
float pr;
  cout<<"Viberite marku 1-Zebra, 2-Silver Ice, 3-MaxRitter"<<endl;
cin>>a1;
  cout<<"Viberite zvet 1-black, 2-blue"<<endl;
cin>>b1;
  cout<<"Viberite ves 1-50, 2-100"<<endl;
cin>>c1;
  cout<<"Viberite tip 1-gelevaya, 2-ne gelevaya"<<endl;
cin>>d1;
  cout<<"Viberite dlinu 1-5, 2-7, 3-10"<<endl;
cin>>e1;
 
a.init(a1,b1,c1,d1,e1);
 
    clrscr();
cout << "Marka: ";
switch (a1){
    case 1:
    cout << "Pentel"<< endl;
    break;
    case  2:
    cout << "Silver Ice" <<endl;
    break;
    case 3:
    cout << "MaxRitter" << endl;
    break;}
cout << "Color: ";
switch (b1){
    case 1:
    cout << "Black" << endl;
    break;
    case 2:
    cout << "Blue" << endl;
    break;}
cout <<"Ves: ";
switch (c1){
    case 1:
    cout << "50" << endl;
    break;
    case 2:
    cout << "100" << endl;
    break;}
cout <<"Type: ";
switch (d1){
    case 1:
    cout << "Gelevaya" << endl;
    break;
    case 2:
    cout << "Ne gelevaya" <<endl;
    break;}
cout <<"Dlina: ";
switch (e1){
    case 1:
    cout << "5" <<endl;
    break;
    case 2:
    cout << "7" <<endl;
    break;
    case 3:
    cout << "10" << endl;
    break;}
 
 
pr=a.price();
 
printf("Vash zakaz i zena pokupki: =%.2f", pr);
getch();
return 0;}
Это я делал задачу по покупке ручки. + добавилось доп. задание(добавить ещё один конструктор и пару к нему функций). я придумал добавить конструктор под именем cap и собственно не могу понять как его безошибочно добавить...

А вот то, что хочу сделать, но не получается..
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
#include<iostream.h>
#include<stdio.h>
#include<conio.h>
class pen{
private:
int marka, zvet, ves, gelevaya,dlinna, col;
float cost;
public:                                                
    pen(){}
    pen (int a, int b, int c, int d,int e);
    ~pen(){}
  int get_marka(){return marka;}
  int get_zvet(){return zvet;}
  int get_ves(){return ves;}
  int get_gelevaya(){return gelevaya;}
  int get_dlinna(){return dlinna;}
  void init(int a, int b, int c, int d, int e);
  void put_marka(int a){marka=a;}
  void put_zvet(int b){zvet=b;}
  void put_ves(int c){ves=c;}
  void put_gelevaya(int d){gelevaya=d;}
  void put_dlinna(int e){dlinna=e;}
        
public:
        cap(){}
        cap (int f);
        ~cap(){}
    int get_col(){return col;}
    void init(int f);
    void put_col(){col=f;}
    
    float price();};
    float cap::price()
    float pen::price()
{cost = 0;
switch(marka){
  case 1:
  cost += 30;
  break;
  case 2:
  cost += 20;
  break;
  case 3:
  cost += 35;
  break;}
switch(zvet){
  case 1:
  cost += 20;
  break;
  case 2:
  cost += 20;
  break;}
switch(ves){
  case 1:
  cost += 10;
  break;
  case 2:
  cost += 15;
  break;}
switch(gelevaya){
  case 1:
  cost +=10;
  break;
  case 2:
  cost += 0;
  break;}
switch(dlina){
  case 1:
  cost += 10;
  break;
  case 2:
  cost += 20;
  break;
  case 3:
  cost += 30;
  break;}
switch(col){
  case 1:
  cost += 20;
  break;
  case 2:
  cost += 20;
  break;}
    return cost;}
 
pen::pen(int a,int b, int c, int d, int e){
marka=a, zvet=b, ves=c, gelevaya=d, dlina=e;}
void pen::init(int a,int b, int c, int d, int e)
{marka=a, zvet=b, ves=c, gelevaya=d, dlina=e;}
cap::cap(int f) {zvet=f;}
void cap::init(int f){zvet=f;}
 
int main(){ clrscr();
   pen a;
   cap b;
           int a1,b1, c1, d1, e1, p;
     int f1;
      float pr;
  cout<<"Viberite marku 1-Zebra, 2-Silver Ice, 3-MaxRitter"<<endl;
cin>>a1;
  cout<<"Viberite zvet 1-black, 2-blue"<<endl;
cin>>b1;
  cout<<"Viberite ves 1-50, 2-100"<<endl;
cin>>c1;
  cout<<"Viberite tip 1-gelevaya, 2-ne gelevaya"<<endl;
cin>>d1;
  cout<<"Viberite dlinu 1-5, 2-7, 3-10"<<endl;
cin>>e1;
    cout<<"Viberite zvet kolpachka dlya ruchki 1-black, 2-blue"<<endl;
cin>>f1;
a.init(a1,b1,c1,d1,e1);
b.init(f1);
    clrscr();
cout << "Marka: ";
switch (a1){
    case 1:
    cout << "Pentel"<< endl;
    break;
    case  2:
    cout << "Silver Ice" <<endl;
    break;
    case 3:
    cout << "MaxRitter" << endl;
    break;}
cout << "Color: ";
switch (b1){
    case 1:
    cout << "Black" << endl;
    break;
    case 2:
    cout << "Blue" << endl;
    break;}
cout <<"Ves: ";
switch (c1){
    case 1:
    cout << "50" << endl;
    break;
    case 2:
    cout << "100" << endl;
    break;}
cout <<"Type: ";
switch (d1){
    case 1:
    cout << "Gelevaya" << endl;
    break;
    case 2:
    cout << "Ne gelevaya" <<endl;
    break;}
cout <<"Dlina: ";
switch (e1){
    case 1:
    cout << "5" <<endl;
    break;
    case 2:
    cout << "7" <<endl;
    break;
    case 3:
    cout << "10" << endl;
    break;}
cout <<"Color cap: ";
switch (f1){
    case 1:
    cout << "Black"<< endl;
    break;
    case 2:
    cout << "Blue"<< endl;
    break;}
pr=a.price();
pr=b.price();
printf("Vash zakaz i zena pokupki: =%.2f", pr);
getch();
return 0;}
Сыроежка
Заблокирован
17.10.2011, 20:10     Возможно ли так?) #5
В С++ конструкторы не имеют имен, как другие функции! Вы не можете для класса pen добавить конструктор cap. Определение конструктора для класса имеет специальный синтаксис, когда используется имя класса. То есть все конструкторы, а также деструктор должны объявляться с идентификатором, являющимся именем класса!
Parushic
0 / 0 / 0
Регистрация: 18.09.2011
Сообщений: 27
17.10.2011, 20:14  [ТС]     Возможно ли так?) #6
Цитата Сообщение от Сыроежка Посмотреть сообщение
В С++ конструкторы не имеют имен, как другие функции! Вы не можете для класса pen добавить конструктор cap. Определение конструктора для класса имеет специальный синтаксис, когда используется имя класса. То есть все конструкторы, а также деструктор должны объявляться с идентификатором, являющимся именем класса!
приведите пример объявления конструктора и деструктора с идентификатором класса?
Сыроежка
Заблокирован
17.10.2011, 20:18     Возможно ли так?) #7
Цитата Сообщение от Parushic Посмотреть сообщение
приведите пример объявления конструктора и деструктора с идентификатором класса?
Так он у вас перед глазами! У вас определяется класс pen, в котором объявлены следующие конструкторы и деструктор

C++
1
2
3
        pen(){}
        pen (int a, int b, int c, int d,int e);
        ~pen(){}

Это же ваш собственный код, не так ли?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.10.2011, 12:06     Возможно ли так?)
Еще ссылки по теме:

C++ Дописать программу так, чтобы в массив вводились как целые числа так и вещественные
C++ А возможно ли?
Возможно ли подгрузить библиотеку так, чтоб компоновщик подгружал функции из основной программы? C++

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

Или воспользуйтесь поиском по форуму:
Parushic
0 / 0 / 0
Регистрация: 18.09.2011
Сообщений: 27
18.10.2011, 12:06  [ТС]     Возможно ли так?) #8
Цитата Сообщение от Сыроежка Посмотреть сообщение
Так он у вас перед глазами! У вас определяется класс pen, в котором объявлены следующие конструкторы и деструктор

C++
1
2
3
        pen(){}
        pen (int a, int b, int c, int d,int e);
        ~pen(){}

Это же ваш собственный код, не так ли?
Да да, но я не могу понять.. Как объявить новый конструктор в моем классе!

Добавлено через 3 минуты
Как я понял из вышепредложенного, нужно вставить класс cap в pen и создать конструктор к дочернему классу cap??

Добавлено через 14 часов 29 минут
Тема актуальна! Не могу все равно понять как объявить второй конструктор в классе PEN...
Yandex
Объявления
18.10.2011, 12:06     Возможно ли так?)
Ответ Создать тему
Опции темы

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