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

классы и наследование - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Работа с файлом http://www.cyberforum.ru/cpp-beginners/thread398349.html
как изменить код,чтобы можно было при следующем вызове функции, дописывать все эти значения в конец файла,а не переписывать файл заново? void cout_file() { ofstream file ("outgauss.txt"); file<<"Размерность системы = "<<n<<"x"<<n<<endl; file<<"Матрица: "<<endl; for (int i=0;i<n;i++) { for (int j=0;j<n;j++) {
C++ Вставка текста в поля ввода программ из меню - как не терять фокус? Нужно вставить определенный текст в поле ввода любой программы из созданного мной всплывающего меню (которое появляется по глобальной горячей клавише). Проблема в том, как прикрепить к полю ввода чужой программы свое меню? Пробовал создать свое окно с меню, но при этом происходит потеря фокуса. Подскажите пожалуйста. http://www.cyberforum.ru/cpp-beginners/thread398346.html
C++ Двумерные циклы
1)1+(1+1/2)+(1+1/2+1/3)+....(1+1/2+1/3....1/n) 2)(a+1)(2a+2)(3a+3)....(na+n) Добавлено через 16 минут #include <cstdlib> #include <iostream> using namespace std; int main(int argc, char *argv)
Лабораторка по С++ на одномерный массив C++
Лабораторка по С++. Мы его начали проходить не так давно. Не могли бы помоч с решением? Задан одномерный массив. Вычислить сумму элементов, стоящих на четном месте и модуль разности элементов, стоящих на нечетном месте. Одномерный массив вводится пользователем. самое просто что пришло в голову 1 - цикл по элементам массива 2 - в цикле проверять делится ли число на 2 без остатка: ...
C++ исправите ошибку http://www.cyberforum.ru/cpp-beginners/thread398333.html
#include <iostream> #inclide <math> int main() { int a, s, r; cout<<"a="; cin>>a; if (a>0) { r = (a*sqrt(3))/6; s = pi*sqr(r); cout<<"s="<<s;
C++ статичные члены шаблонного класса: инициализация Здравствуйте! есть вот такой вот код, он с объявлением фиктивного елемента (#define NIL &nilspase static et nilspase; ) вопрос в том, как инициализировать nilspase. template<typename D, typename K> class rbtree{ struct et{ подробнее

Показать сообщение отдельно
dimcoder
Полярный
 Аватар для dimcoder
449 / 422 / 66
Регистрация: 11.09.2011
Сообщений: 1,108
04.12.2011, 21:01     классы и наследование
Не совсем правильно, так как эта функция подходит для обоих классов. Зачем создавать два одинаковых класса, просто у одного будет yes а у другого no? Эту функцию можно занести в базовый класс. Для гостя обычного гостя я создал функцию элемент get/set Number, то есть где он живёт. Vip унаследовал этот класс и добавил функции элементы get/set tours, то есть у него есть кол-во доступных экскурсий.

Теперь создаете в папке include текстовый документ и переименовываете в GUEST.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
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
#include <iostream.h>
#include <conio.h>
#ifndef GUEST_H
#define GUEST_H
 
class Guest
{
   public:
 
   Guest(const char *, const char *, int, int, int, int = 0);
   //Family, WhereFrom, CostPerDay, Day of coming, Month of coming, addCost
 
   void setFamily(const char *);
   void setFrom(const char *);
   void setCost(int);
   void setDay(int);
   void setMonth(int);
   void setAddCost(int); //Oplata za dop uslugi
 
   const char * getFamily()
   {
      return family;
   }
 
   const char * getFrom()
   {
      return from;
   }
 
 
   int getCost () {return cost;}
   int getAddCost () {return addCost;}
 
 
   int getDay () {return day;}
   int getMonth () {return month;}
 
   int getTotalCost() {return cost + addCost;}
 
 
   private:
 
   char family[30];
   char from[30];
 
   int cost;
   int day;
   int month;
   int addCost;
   int totalCost;
};
 
Guest::Guest (const char *fam, const char *fr, int d, int m, int c, int add)
{
   setAddCost(add);
 
   setFamily(fam);
 
   setFrom(fr);
 
   setCost(c);
 
   setDay(d);
 
   setMonth(m);
 
   setAddCost(add);
}
 
void Guest::setCost(int c)
{
   if (c >= 0)
      cost = c;
   else
      cout << "Error: invalid cost" << endl;
}
 
void Guest::setDay(int d)
{
   if (d >= 0)
      day = d;
   else
      cout << "Error: invalid day of coming" << endl;
}
 
void Guest::setMonth(int m)
{
   if (m >= 0)
      month = m;
   else
      cout << "Error: invalid month of coming" << endl;
}
 
void Guest::setAddCost(int add)
{
   if (add >= 0)
      addCost = add;
   else
      cout << "Error: invalid Add cost" << endl;
}
 
 
void Guest::setFamily(const char * fam)
{
   for (int i = 0; fam[i] != '\0'; i++)
      family[i] = fam[i];
 
   family[i] = '\0';
}
 
void Guest::setFrom(const char * fr)
{
   for (int i = 0; fr[i] != '\0'; i++)
      from[i] = fr[i];
 
   from[i] = '\0';
}
 
#endif
Добавлено через 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
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
#include <iostream.h>
#include <conio.h>
#include <guest.h>
 
class guestSimple:public Guest
{
   public:
 
   guestSimple(const char *, const char *, int, int, int, int, int = 0);
 
   void setNumber(int);
 
   int getNumber() {return number;}
 
   private:
 
   int number;
};
 
guestSimple::guestSimple
(const char * fam, const char * fr, int d, int m, int c, int num, int add):
Guest(fam, fr, d, m, c, add)
{
   setNumber(num);
}
 
void guestSimple::setNumber(int num)
{
   if (num > 0)
      number = num;
   else
      cout << "Error: incorrect number of room";
}
 
 
class guestVip:public guestSimple
{
   public:
 
   guestVip(const char *, const char *, int, int, int, int, int, int);
 
   void setToursLeft(int);
 
   int getToursLeft() {return toursLeft;}
 
   private:
 
   int toursLeft;
};
 
guestVip::guestVip
(const char * fam, const char * fr, int d, int m, int c, int num, int l, int add):
guestSimple(fam, fr, d, m, c, num, add)
{
   setToursLeft(l);
}
 
void guestVip::setToursLeft(int l)
{
   if (toursLeft >= 0)
      toursLeft = l;
   else
      cout << "Error: incorrect number of left tours";
}
 
 
main ()
{
   guestSimple gs("James", "Moscow", 11, 12, 100, 77);
   guestVip gv("Bob", "Piter", 5, 7, 300, 116, 3, 120);
 
   //Driver for guestSimple
   cout << "Guest family = " << gs.getFamily() << endl;
   cout << "Day of coming = " << gs.getDay() << endl;
   cout << "Month of coming = "  << gs.getMonth() << endl;
   cout << "Came from = " << gs.getFrom() << endl;
   cout << "Cost per day = " << gs.getCost() << endl;
   cout << "Add cost = " << gs.getAddCost() << endl;
   cout << "Total cost = " << gs.getTotalCost() << endl;
   cout << "Number of room = " << gs.getNumber() << endl;
 
   cout << endl << endl;
 
   //Driver for guestVip
   cout << "Guest family = " << gv.getFamily() << endl;
   cout << "Day of coming = " << gv.getDay() << endl;
   cout << "Month of coming = "  << gv.getMonth() << endl;
   cout << "Came from = " << gv.getFrom() << endl;
   cout << "Cost per day = " << gv.getCost() << endl;
   cout << "Add cost = " << gv.getAddCost() << endl;
   cout << "Total cost = " << gv.getTotalCost() << endl;
   cout << "Number of room = " << gs.getNumber() << endl;
 
 
   getch();
 
   clrscr();
 
   return 0;
}
 
Текущее время: 22:26. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru