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

Механизм замещения - C++

Восстановить пароль Регистрация
 
Electroflower
Форумчанка
 Аватар для Electroflower
289 / 82 / 9
Регистрация: 05.01.2012
Сообщений: 424
Записей в блоге: 1
21.05.2013, 10:21     Механизм замещения #1
Привет ребят! Пишу наследование. Есть базовый абстрактный класс и два производных. Написала всего одну функцию print и не получается реализовать замещение для нее
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
class osv_prib
{
public:
       virtual void print(TMemo*M)=0;
       virtual ~osv_prib(){};
protected:
       int cena;//öåГ*Г*
       AnsiString imya;//èìÿ
       int   CCBETA;//Г±ГЁГ«Г* Г±ГўГҐГІГ*
};
 
void osv_prib::print(TMemo* M){
M->Lines->Add("Осветительные приборы");
M->Lines->Add("Название: "+imya);
M->Lines->Add("Цена: "+IntToStr(cena)+ "  руб.");
M->Lines->Add("Сила света: "+IntToStr(CCBETA)+ "  кд");
M->Lines->Add("___________________________");
}
 
 
 //---- ГЄГ«Г*Г±Г± "ÑâåòèëüГ*ГЁГЄГЁ"----//
class svetilniki: public virtual osv_prib
{public:
        virtual void print (TMemo*M);
        virtual ~svetilniki(){};
        svetilniki(){};
        svetilniki(int cena1, AnsiString imya1, int CCBETA1,int dalnost);
protected:
        int dalnost;
};
 
svetilniki::svetilniki(int cena1, AnsiString imya1, int CCBETA1,int dalnost1)
{
cena=cena1;
imya=imya1;
CCBETA=CCBETA1;
dalnost=dalnost1;
}
 
void svetilniki::print(TMemo*M){
M->Lines->Add("Г‘Светильники");
M->Lines->Add("Дальность: "+ IntToStr(dalnost) +"  метров");
M->Lines->Add("___________________________");
}
 
 //----ГЄГ«Г*Г±Г±"Ïðîæåêòîðû"----//
class proj: public virtual osv_prib {
public:
        virtual void print(TMemo*M);
        virtual ~proj(){};
        proj();
        proj(int cena1 ,AnsiString imya1,int   CCBETA1, int ploshad);
protected:
        int ploshad;
};
proj::proj(){};
proj::proj(int cena1 ,AnsiString imya1,int   CCBETA1, int ploshad1)
{
cena=cena1;
imya=imya1;
CCBETA=CCBETA1;
ploshad=ploshad1;
}
void proj::print(TMemo*M){
M->Lines->Add("Прожекторы");
M->Lines->Add("Прожекторы: "+ IntToStr(ploshad)+"  метров кв.");
M->Lines->Add("___________________________");
}
 
 
 
 
 
 
 
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
svetilniki s(3000,"Торшер",100,6);
s.print(Memo1);
proj pj(150000,"Производственный",600,20);
pj.print(Memo1);
 
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
        osv_prib  *ps;
        svetilniki gs(3000,"Торшер",100,6),*pgs;
 
  pgs->print(Memo2); //svetilniki::print
  // osv_prib::print
 
}
//---------------------------------------------------------------------------
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.05.2013, 10:21     Механизм замещения
Посмотрите здесь:

Реализация механизма замещения страниц в ОП C++
C++ Механизм перегрузки
Помогите разобраться (STL, алгоритмы замещения страниц) C++
C++ Алгоритмы замещения страниц(STL, вторая попытка)
Алгоритм замещения страниц LRU с помощью методов библиотеки STL C++
механизм перегрузки функций C++
механизм присваивания в С++ C++
C++ Механизм перегрузки

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
5947 / 5552 / 1784
Регистрация: 18.12.2011
Сообщений: 14,184
Завершенные тесты: 1
21.05.2013, 10:33     Механизм замещения #2
Должно быть примерно так:
C++
1
2
3
4
5
6
7
void __fastcall TForm1::Button2Click(TObject *Sender)
{
        osv_prib  *ps;// указатель на базовый класс
        svetilniki gs(3000,"Торшер",100,6);
        ps=&gs;     // указатель инициализируем адресом производного класса
        ps->print(Memo2); // срабатывает виртуальный механизм
}
Electroflower
Форумчанка
 Аватар для Electroflower
289 / 82 / 9
Регистрация: 05.01.2012
Сообщений: 424
Записей в блоге: 1
21.05.2013, 10:56  [ТС]     Механизм замещения #3
zss, вот так тоже пробовала, он принтит только то что относится к светильникам, т.е. дальность, не могу понять почему...
Yandex
Объявления
21.05.2013, 10:56     Механизм замещения
Ответ Создать тему
Опции темы

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