Re: warning C4250: 'class1' : inherits 'class2::member' via
От: Кодт Россия  
Дата: 08.10.04 15:09
Оценка:
Здравствуйте, 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;
};
Перекуём баги на фичи!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.