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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.01.2013, 18:02   #1
java91
Новичок
Джуниор
 
Регистрация: 20.01.2013
Сообщений: 1
По умолчанию Переопределение класса у объекта

Здравствуйте. Возник вопрос, помогите пожалуйста разобраться...
есть 3 класса
Код:
class a{
public:
	int z;
	a(void){
		z = 4;
	}
	virtual ~a(void){};
};

class b: public a{
public:
	int s;
	b(void){
		s = 4;
		z = 1;
	}
	 ~b(void){};
};

class c: public a{
public:
	int s;
	c(void){
		s = 8;
		z = 10;
	}
	 ~c(void){};
};
И пример:
Код:
a *per1;
	b *per2;
	c *per3;

	per2 = new b;
	per1 = dynamic_cast<b *> (per2);
	per1 = new b;
	per2 = per1; // естественно тут так нельзя
	cout<<per1->z;
Как сделать что бы от туда мне изъять объект класса b??
или что почитать . Заранее спасибо за помощь...

PS: ОС - windows 8; Среда: MS Visual studio 2012

Последний раз редактировалось java91; 20.01.2013 в 18:03. Причина: PS
java91 вне форума Ответить с цитированием
Старый 20.01.2013, 18:51   #2
EUGY
Форумчанин
 
Аватар для EUGY
 
Регистрация: 11.07.2010
Сообщений: 914
По умолчанию

Эта попытка называется Up Casting.
Можно конечно нагло прикастовать
Код:
per2 = static_cast<b*>(per1),
Но для этого надо быть уверенным, что этот per1 - может быть в реальности указателем на класс b. И для того, чтобы убедится в возможности кастинга вверх, в определениях каждого класса в иерархии надо написать виртуальную функцию, которая будет запрашивать информацию о классе.
Что-то в этом роде
Код:
virtual const char*  getrtti()
{
    return typeid(this).name();
}
И перед static_cast проверять реальное значение rtti.
EUGY вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Конструктор класса не хочет принимать в качестве параметра адрес объекта другого класса Jugger Помощь студентам 3 05.01.2012 04:10
[Java] Создание объекта внутри объекта этогоже класса. Svarogich Помощь студентам 2 01.08.2011 16:03
Переопределение метода для каждого экземпляря класса vsrmis Общие вопросы Delphi 6 01.08.2011 15:21
Ошибка при присвоении объекту производного класса объекта базового класса с исп. явного приведения типов Lanx Помощь студентам 0 06.04.2011 20:24
Переопределение конструктора класса RFbager Общие вопросы C/C++ 2 12.11.2010 14:17