|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
17.12.2010, 00:19 | #1 |
Подтвердите свой е-майл
Регистрация: 16.12.2010
Сообщений: 5
|
Проблема с виртульными функциями
Здравствуйте! У меня возникла проблема с обращением к именно той виртуальной функции, которая мне нужна. У меня есть класс содержащий поля а и в, также есть наследник этого класса. В главном классе есть виртуальная функция складывающая поля (int) а и в, и такая же в производном классе. Так вот, я хочу создать
массив указателей, выделить память в каждом элементе под объект производного класса. Но как обратится к нужной виртуальной функции нужного элемента, мне не понятно. Код: Код:
basa_1 *m, t; basa_2 t_2; m = &t; m->pribav(); - будет вызвана функ. из класса basa_1 m = &t_2; m->pribav(); - будет вызвана функ. из класса basa_2 А вот как реализовать этот метод с массивом указателей? |
17.12.2010, 02:21 | #2 |
C++ hater
СтарожилДжуниор
Регистрация: 19.07.2009
Сообщений: 3,333
|
просто создай массив указателей на класс base и заполни его указателями и на base, и на производный
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay
My other car is cdr. Q: Whats the object-oriented way to become wealthy? A: Inheritance |
17.12.2010, 09:56 | #3 |
Подтвердите свой е-майл
Регистрация: 16.12.2010
Сообщений: 5
|
то есть вот так получается:
Код:
|
17.12.2010, 12:55 | #4 |
C++ hater
СтарожилДжуниор
Регистрация: 19.07.2009
Сообщений: 3,333
|
2petrovich985
чет я тя не пойму. вот смотри пример Код:
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay
My other car is cdr. Q: Whats the object-oriented way to become wealthy? A: Inheritance |
17.12.2010, 19:43 | #5 |
Подтвердите свой е-майл
Регистрация: 16.12.2010
Сообщений: 5
|
Мне нужно что бы через pArr[i] я мог вызывать функцию которая может находится и в base и в derived путём (один из вариантов) присвоения адреса объекта и дальше запуск нужной виртуальной функции зависел бы от типа объекта, адрес которого я присвоил до этого.
|
17.12.2010, 20:25 | #6 |
C++ hater
СтарожилДжуниор
Регистрация: 19.07.2009
Сообщений: 3,333
|
2petrovich985
ну а я что тебе написал?
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay
My other car is cdr. Q: Whats the object-oriented way to become wealthy? A: Inheritance |
17.12.2010, 20:37 | #7 |
Подтвердите свой е-майл
Регистрация: 16.12.2010
Сообщений: 5
|
Я имею в виду, что вызывать виртуальную функцию из pArr[1], как из derived так и из base. А у тебя чередуется pArr[0] - функция из base, pArr[1] - функция из derived. Я там пример приводил, как это может выглядеть но без массива указателей, то есть использовался один указатель
|
18.12.2010, 20:39 | #8 |
Подтвердите свой е-майл
Регистрация: 16.12.2010
Сообщений: 5
|
Ок, зайдём с другой стороны, как там где u = 3 вызвать виртуальную функцию из basa_1, а где u = 4 вызвать виртуальную функцию из basa_2
Код:
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Проблема с функциями из math.h | maryan.vetrov | Общие вопросы C/C++ | 2 | 01.08.2010 19:34 |
Проблема с функциями(передача масива в функцию типа int) | sekator | Общие вопросы C/C++ | 4 | 27.07.2010 22:13 |
проблема с функциями | world12_tk | Помощь студентам | 6 | 03.03.2009 19:34 |
Задача с функциями | Серафимий Долговяз | Помощь студентам | 2 | 31.01.2009 18:32 |
Работа с функциями | Worms | Общие вопросы Delphi | 1 | 02.12.2007 15:51 |