Re[4]: Ну дают админы...
От: igor_soukhov  
Дата: 27.04.01 09:11
Оценка:
Здравствуйте igor_soukhov, 26.04.2001 07:59:47 вы писали:

Hi !


В общем я был неправ ... ;(

иерархия классов такова

СSnapInItem(ATL)
^
|
CSnapInItemImpl<T> : public СSnapInItem
^
|
CXXXData<T> : public CSnapInItemImpl<T>
^
|
CResultNode<T> :public CXXXData<T>
^
|
CResultNodeNum<T> : public CResultNode<T>
^
|
CConcreteResultNode : CResultNodeNum<CConcreteResultNode>


указатель p — указывает на обект CConcreteResultNode...
статический тип указателя p — CSnapInItem .... я его хочу привести к
СResultNode<CConcreteResultNode>... В СResultNode есть v-метод, кооторый
мне надо вызвавть(этот метод переопределяется в CConcreteResultNode).

в это приведения я делал из metoda другого темплейтного класса ...
код там был такой:
СResultNode<T> *pConcrecteResultNode = dynamic_cast<СResultNode<T> >(p);

естественно что T в этом методе — это не CConcreteResultNode посему и был облом ...

Best regards,
Igor



>Привет Андрей,

>
>>>(ксати буквально седня столкнулся с проблемой в VC6 — у мя есть иерархия высотой 3-4 класса — наследование от темплейтных классов (и не только) — но наследование одиночное) — и
>>>dynamic_cast — не смог мне откастить (получал NULL pointer) — а (T*) преобразование помогло ... что под указателем лежит нунжый обект — 100% (во первых так оно и есть вот вторых виртуалтные метобы вызываются прально).
>
>>Скорее всего ты пытался привести dynamic_cast'ом указатель к классу не имеющему ниодной виртуальной
>функции при выключеной в опциях проекта RTTI.
>во первых я писал что ВИРТУАЛЬНЫЕ методы работают ! :)
>во вторых — то что ты описал — проверяется в complile-time ... то есть просто бы не скомпилилось...
>завтра нарисую иерархию наследования — может че проясним ...
>
>>С наилучшими,
>>Андрей.
>
>Пасиба,
>Igor
* thriving in a production environment *
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.