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

Вызов оператора базового класса - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Вычислить и напечатать обратные целых чисел http://www.cyberforum.ru/cpp-beginners/thread397118.html
Вычислить и напечатать обратные целых чисел от 2 до 51 со 100 цифрами после "."
C++ выделение памяти #include <iostream> using namespace std; class Matrix { int m, n; public: float **M; Matrix(int a, int b); void input(); }; http://www.cyberforum.ru/cpp-beginners/thread397112.html
Прокоментируйте код программы на С++ C++
#include <cstdlib> #include <iostream> #include <stdio.h> using namespace std; class computer { private: int frequency; public: computer(): frequency() {} \\ Что здесь значит 2 точки???\\конструктор
C++ Площадь треугольника
Помогите пожалуйста. Надо сделать программу которая по трем координатам, введенных пользователем, считает площадь фигуры, ограниченной точками, а также строит на экране плоскость в декартовой системе координат (3 проекции).
C++ Подсчет количества слов в строке http://www.cyberforum.ru/cpp-beginners/thread397083.html
Задача: Подсчет количества слов в строке s разделенных пробелами, или запятой. Для этого нужно использовать функцию: int Words (s). Нельзя использовать библиотеку string.h... Вот нашол код: #include <stdio.h> #define SLASH " ," // здесь можно указывать какие разделители будут: '\t' '\n' '\r' -=|. int is_slash(char ch) { const char* sc = SLASH; while( *sc ) {
C++ Вывести слова в обратном порядке Привет всем. Я студент, помогите пожалуйста написать программу: дана строка состоящая из 30 слов между словами пробел и запятая вывести на экран слова в обратном порядке. P.S. Желательно как можно проще , а то мне её еще объяснять=) подробнее

Показать сообщение отдельно
N@t@lk@
3 / 3 / 0
Регистрация: 30.11.2011
Сообщений: 17

Вызов оператора базового класса - C++

02.12.2011, 14:21. Просмотров 1572. Ответов 9
Метки (Все метки)

Помогите, плиз!
нужно в операторе= класса-наследника вызвать оператор= базового класса. Ошибка при вызове деструктора. Как исправить?

базовый класс:

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
#include <string.h>
#include <conio.h>
#include <stdio.h>
#include "comp.h"
 
comp::comp()
{
  marka=new char;
  *marka='\0';
  cena=0;
}
 
comp::comp(char *m, int c)
{
  marka=new char[strlen(m)+1];
  strcpy(marka, m);
  if(c<0) puts("Не верно!");
  else cena=c;
}
 
comp::comp(comp &v)
{
  marka=new char[strlen(v.GetMarka())+1];
  strcpy(marka, v.GetMarka());
  cena=v.GetCena();
}
 
comp::~comp()
{
  delete marka;
}
 
comp::comp(char *s)
{
 marka=new char [strlen(s)+1];
 strcpy(marka,s);
 cena=0;
}
 
char *comp::GetMarka(void)
 {return marka;}
 
int comp::GetCena(void)
 {return cena;}
 
void comp::SetMarka(char *m)
 {
  delete marka;
  marka=new char [strlen(m)+ 1];
  strcpy(marka, m);
 }
 
void comp::SetCena(int c)
 {
  if(c<0) puts ("Не верно!");
  else cena=c;
 }
 
void comp::Print(void)
{
  printf("\nмарка компьютера - %s,цена - %d",GetMarka(),GetCena());
}
void comp::Set(void)
{
  char s[50];
  printf("\nВведите марку компьютера - ");
  fflush(stdin);
  gets(s);
  SetMarka(s);
  int v;
  printf("\nВведите цену - ");
  scanf("%d",&v);
  SetCena(v);
}
 
comp comp::operator = (comp &s)  // ОПЕРАТОР БАЗОВОГО КЛАССА
{
  SetMarka(s.GetMarka());
  SetCena(s.GetCena());
}
Класс-наследник

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
#include <string.h>
#include <conio.h>
#include <stdio.h>
#include "comp.h"
#include "psystem.h"
 
psystem::psystem()
{
 system=new char;
 *system='\0';
 type=0;
}
 
psystem::psystem(char *m, int c, char *s, int t): comp(m, c)
{
 system=new char[strlen(s)+1];
 strcpy(system, s);
 type=t;
}
 
psystem::~psystem()
{
 delete system;
}
 
void psystem::SetSystem(char *s)
{
 delete system;
 system=new char[strlen(s)+1];
 strcpy(system, s);
}
 
void psystem::SetType(int t)
{
 type=t;
}
 
char *psystem::GetSystem(void)
{
 return system;
}
 
int psystem::GetType(void)
{
 return type;
}
 
void psystem::Print(void)
{
 comp::Print();
 printf("программная с-ма - %s, тип системы - %d", GetSystem(), GetType());
}
 
void psystem::Set(void)
{
 char s[50];
 int t;
 printf("\nВведите программную с-му: ");
 flushall();
 gets(s);
 SetSystem(s);
 printf("\nВведите тип системы: ");
 scanf("%d", &t);
 SetType(t);
 comp::Set();
}
 
void psystem::Copy(comp &p)
{
  SetMarka(p.GetMarka());
  SetCena(p.GetCena());
}
 
void psystem::Max(comp &v)
{
 if (GetCena()<v.GetCena())
   SetCena(v.GetCena());
}
 
psystem psystem::operator = (psystem &s) //ОПЕРАТОР КЛАССА-НАСЛЕДНИКА
{
  this->comp::operator = ((comp)s);    //вызов оператора базового класса
  this->SetSystem(((psystem)s).GetSystem());
  this->SetType(((psystem)s).GetType());
}
Добавлено через 19 минут
Уже сама разобралась)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 15:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru