Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.12.2012, 01:07   #1
hick91
Новичок
Джуниор
 
Регистрация: 25.12.2012
Сообщений: 5
По умолчанию перекрестное приведение к родственному классу в иерархии

напишите простой пример перекрестного приведения к родственному классу в иерархии
hick91 вне форума Ответить с цитированием
Старый 25.12.2012, 01:13   #2
hick91
Новичок
Джуниор
 
Регистрация: 25.12.2012
Сообщений: 5
По умолчанию

просто нигде не могу найти примеров, повышающее, понижающее приведения, все понятно, а перекрестное, примеров не нашел. Ну в теории мне кажется, что нужно привести к общему базовому классу, а после уже к родственному
hick91 вне форума Ответить с цитированием
Старый 25.12.2012, 01:27   #3
pproger
C++ hater
Старожил
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2hick91
ну вот на таком примере это хорошо видно
Код:
#include <iostream>

using namespace std;

class Base1 {
public:
	virtual ~Base1() {}

	virtual void foo()
	{ cout << "Base1::foo" << endl; }
};

class Base2 {
public:
	virtual ~Base2() {}

	virtual void bar()
	{ cout << "Base2::bar" << endl; }
};

class Derived : public Base1, public Base2 {
public:
};

int main()
{
	Base1 *obj1 = new Derived;
	obj1->foo();

	if (Base2 *obj2 = dynamic_cast<Base2 *>(obj1)) {
		obj2->bar();
	} else {
		cout << "cast error" << endl;
	}

	return 0;
}
ну вот я например сразу нашел в этих ваших интернетах.
http://stackoverflow.com/questions/5...-possibly-work
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

Последний раз редактировалось pproger; 25.12.2012 в 01:30.
pproger вне форума Ответить с цитированием
Старый 25.12.2012, 01:36   #4
hick91
Новичок
Джуниор
 
Регистрация: 25.12.2012
Сообщений: 5
По умолчанию

Эм, а как насчет если у нас есть Base<-Derived1 и Base<-Derived2 то как при кастовать Derived1 к Derived2
hick91 вне форума Ответить с цитированием
Старый 25.12.2012, 01:41   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

у них нет родства вообще то.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 25.12.2012, 11:23   #6
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
Эм, а как насчет если у нас есть Base<-Derived1 и Base<-Derived2 то как при кастовать Derived1 к Derived2
reinterpret_cast<Derived2*>( pDerived1 );
За последствия ответственность нести отказываюсь.
Abstraction вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как передать обьетк классу??? KoctR Общие вопросы C/C++ 11 25.03.2012 17:22
Как привязать функцию к классу? minamoto Общие вопросы Delphi 26 25.08.2011 16:08
Перекрестное использование функции ВПР Sparkman Microsoft Office Excel 10 18.09.2010 08:42
Параметр классу? Непонятный с++. jojahti Общие вопросы C/C++ 4 16.10.2009 08:55
Обратиться к классу (Delphi) Air Помощь студентам 16 17.07.2008 19:51