Re[2]: warning C4250: 'class1' : inherits 'class2::member' v
От: yxiie Украина www.enkord.com
Дата: 08.10.04 17:59
Оценка:
Здравствуйте, Кодт, Вы писали:

К>Здравствуйте, yxiie, Вы писали:


Y>>этот варнинг говорит, что у родителей класса есть методы с одинаковыми именами,

Y>>может кто-то подробно разъяснить, что это за варнинг и как с ним боротся.
Y>>и сколько ф-ций в таком варианте будет в VMT?
Y>>чую я, что где-то поблизости есть грабли

К>Структура VMT унаследована от класса A (было бы странно, если бы это не так), и беда в том, что перед классом C стоит проблема: какое из перекрытий использовать. Он берёт первое попавшееся.

К>Лечится 2 способами:
К>1) перекрыть метод в классе C, и статически вызывать оттуда метод одного из предков
К>
К>class C : public B1, public B2
К>{
К>public:
К>  virtual Method() { B2::Method(); }
К>};
К>

К>2) выбрать метод явно
К>
К>class C : public B1, public B2
К>{
К>public:
К>  using B2::Method;
К>};
К>


а я смогу потом

A* a=new C;
a->Method();


вызвать таким образом метод перекрытый в C?
... << RSDN@Home 1.1.3 stable >>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.