Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на C / C++


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / C/C++

Выпуск № 545
от 07.10.2006, 01:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 392, Экспертов: 50
В номере:Вопросов: 3, Ответов: 9


Вопрос № 57297: Здравствуйте! Вопрос по С++; Имеется 2 класса class parent { }; class child: public parent { int pole1; public: int method1() { return pole; } }; void ma...
Вопрос № 57363: Здравствуйте! Подскажите пожалуйсто, где можно найти C и C++ последние версии. Для Win XP и под DOS... Со всеми библиотеками там и т.д. и т.п. - 100% рабочую......
Вопрос № 57381: Здраствуйте господа!!!! Подскажите Мне - Тупому Чайнику....Где Можно Скачать эту Прогу(С++)??? С Программой Я Совершенно Не Знаком...Просто появилось Очень сильное Желание Что нибудь Создать... Хотябы Совсем ничтожного Вида...---Но Всетаки Самом...

Вопрос № 57.297
Здравствуйте!

Вопрос по С++;

Имеется 2 класса

class parent
{
};

class child: public parent
{
int pole1;
public:
int method1()
{
return pole;
}
};

void main()
{
parent *p;
p=new child;
}
Вопрос в том, как через указатель p получить доступ к методам класса child, если это возможно ?

Заранее благодарен за ответ! :)
Отправлен: 01.10.2006, 09:08
Вопрос задал: Svanshe (статус: Посетитель)
Всего ответов: 5
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Uman
Здравствуйте, Svanshe!
А почему бы не попробовать так...

void main()
{
parent *p=new child;;
int i = p->method1();
}
Ответ отправил: Uman (статус: 2-ой класс)
Ответ отправлен: 01.10.2006, 10:20

Отвечает: Melamed
Здравствуйте, Svanshe!
Тут нужно явно преобразовать преобразование типов, которое можно выполнить двумя способами:

((child *)p)->method();

или

union
{
parent *pParent;
child *pChild
} p1

p1.pParent = p;
p1.pChild->method();
Ответ отправил: Melamed (статус: 5-ый класс)
Ответ отправлен: 01.10.2006, 12:21

Отвечает: Хватов Сергей
Здравствуйте, Svanshe!

через dynamic_cast. Другие способы могут привести к неприятностям. Смотрите в приложении.

Вообще-то чтобы делать так, нужны очень веские основания. Попытайтесь обойтись виртуальными методами, перегружеными (overloaded) в классе child

Приложение:

Ответ отправил: Хватов Сергей (статус: 5-ый класс)
Ответ отправлен: 01.10.2006, 19:20

Отвечает: dentist
Здравствуйте, Svanshe!
вам правильно подсказали
((child*)p)->method1();

---------
"Software is like sex, it's better then it's free" (c) Linus Torvalds
Ответ отправил: dentist (статус: 4-ый класс)
Ответ отправлен: 02.10.2006, 09:53

Отвечает: Sergey A. Wedensky
Здравствуйте, Svanshe!
А компилятор не ругается на строку
p = new child;
?
Я бы написал
p = (parent*) new child;

А доступ получить элементарно - преобразованием типа:
((child*)p)->method1();

И раз Вы создаете объект child, не забудьте что удалять нужно тоже его, т.е.
delete (child*)p;
Ответ отправил: Sergey A. Wedensky (статус: 4-ый класс)
Ответ отправлен: 02.10.2006, 10:05


Вопрос № 57.363
Здравствуйте!
Подскажите пожалуйсто, где можно найти C и C++ последние версии. Для Win XP и под DOS... Со всеми библиотеками там и т.д. и т.п. - 100% рабочую...
Отправлен: 01.10.2006, 21:20
Вопрос задал: ZeLiK (статус: 8-ой класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Vaga
Здравствуйте, ZeLiK!
http://msdn.microsoft.com/vstudio/express/visualc/
---------
Ошибка становится ошибкой, когда рождается как истина. Станислав Ежи Лец
Ответ отправил: Vaga (статус: 3-ий класс)
Ответ отправлен: 02.10.2006, 06:47
Оценка за ответ: 4
Комментарий оценки:
Только Визуальный? Но всё-равно спасибо - подойдёт ;)


Вопрос № 57.381
Здраствуйте господа!!!! Подскажите Мне - Тупому Чайнику....Где Можно Скачать эту Прогу(С++)???
С Программой Я Совершенно Не Знаком...Просто появилось Очень сильное Желание Что нибудь Создать... Хотябы Совсем ничтожного Вида...---Но Всетаки Самому!!!!
И Еще... Где можно Найти Документацию(ну В Плане Инструкцию)По Этой Программе(Желательно На Русском Языке)...
Заранее Премного Благодарен!!!!!
-=Sovest=-
Пасиб Вам Еще раз!!!!!!!!!
Отправлен: 01.10.2006, 23:45
Вопрос задал: -=Sovest=- (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: UnRe@l
Здравствуйте, -=Sovest=-!
Видимо Вы имеете в виду среду разработки (RAD IDE). Скачать Вам ту же Microsoft Visual Studio .NET не удастся.
Документации достаточно в Интернет. К примеру, http://www.mini-soft.ru/book/visual_c/ . Без особых проблем сможете найти гораздо больше, воспользовавшись тем же Яндексом. Кроме того, есть и книгопечатная продукция.
---------
Cogito, ergo sum (c) R. Descartes (1596-1650)
Ответ отправил: UnRe@l (статус: 1-ый класс)
Ответ отправлен: 02.10.2006, 04:20
Оценка за ответ: 5
Комментарий оценки:
Пасиб!!! Большое!!!!!!!!!!!!

Отвечает: Vaga
Здравствуйте, -=Sovest=-!
http://msdn.microsoft.com/vstudio/express/visualc/
---------
Ошибка становится ошибкой, когда рождается как истина. Станислав Ежи Лец
Ответ отправил: Vaga (статус: 3-ий класс)
Ответ отправлен: 02.10.2006, 06:48
Оценка за ответ: 4
Комментарий оценки:
Пасиб!!!!!

Отвечает: dentist
Здравствуйте, -=Sovest=-!
ну во первых C++ это не прога а язык программирования.
вовторых, прогу =), чтобы писать на С++ можно скачать с интернета (читаем тут: http://www.gamedev.ru/faq/?id=17) или купить в магазине на диске.
втретьих книги бывают разные ;) электронные и бумажные. бумажные покупаются в книжных магазинах или заказываются в интернете (например тут: http://www.gamedev.ru/books/), а электронные, гугл приказал качать тут: http://www.gamedev.ru/faq/?id=48
;)
---------
"Software is like sex, it's better then it's free" (c) Linus Torvalds
Ответ отправил: dentist (статус: 4-ый класс)
Ответ отправлен: 02.10.2006, 10:02
Оценка за ответ: 5
Комментарий оценки:
Пасиб Друг!!!!!


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.37 от 04.10.2006
Яндекс Rambler's Top100

В избранное