virtual inheritance
От: alzav  
Дата: 16.09.03 05:26
Оценка:
Здравствуйте,
может кто-нибудь просвятить меня в следующем вопросе:
Каким образом возможно(и возможно ли) осуществить приведение вниз по иерархии наследования от предка, наследование от которого было ВИРТУАЛЬНЫМ?

что-то вроде этого:

class Base
{
...
virtual void func (Base&)=0;
};

class Descendant : virtual public Base
{
virtual void func (Base& base)
{
...
(Descendant*)&base;
...
}
};


а в результате(MSVC):

...\point.h(97) : error C2635: cannot convert a 'VectorGraphics::Object<3,float>*' to a 'VectorGraphics::ElementaryObject<3,float>*'; conversion from a virtual base class is implied


И ещё: почему dynamic_cast не работает В ПРИНЦИПЕ? При любой попытке использования dynamic_cast приложение завершается по исключению.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.