Информация об изменениях

Сообщение Re: Абстрактный класс и множественное наследование от 18.01.2019 11:39

Изменено 18.01.2019 11:39 rg45

Re: Абстрактный класс и множественное наследование
Здравствуйте, Gregory, Вы писали:

G>Возникла следующая проблема,заключающаяся в непредсказуемом поведении компилятора VC++.

G>Есть три класса:
G>При попытке вызвать Daughter::foo все рушится. Как следует из просмотра asm-листинга, в vftable там, где по идее должен был бы находится адрес Daughter::foo, находится непонятно что. Выглядит вызов следующим образом:
G>Выглядит все вроде бы правильно, но при просмотре в дебагере видно, что в eax оказывается вовсе не адрес Daughter::foo. С точки зрения синтаксиса вроде бы тоже все правильно. Что это, глюк компилятора?

Я попробовал доработать исходный пример и запустил его на Visual Studio 2015 и на GCC-6.3, никаких проблем не обнаружил:

https://ideone.com/TbjBEN.

Поэтому для начала хотелось бы понимать, о какой версии студии идет речь, а так же увидить минимальный рабочий пример, воспроизводящий проблему.
Re: Абстрактный класс и множественное наследование
Здравствуйте, Gregory, Вы писали:

G>Возникла следующая проблема,заключающаяся в непредсказуемом поведении компилятора VC++.

G>Есть три класса:
G>При попытке вызвать Daughter::foo все рушится. Как следует из просмотра asm-листинга, в vftable там, где по идее должен был бы находится адрес Daughter::foo, находится непонятно что. Выглядит вызов следующим образом:
G>Выглядит все вроде бы правильно, но при просмотре в дебагере видно, что в eax оказывается вовсе не адрес Daughter::foo. С точки зрения синтаксиса вроде бы тоже все правильно. Что это, глюк компилятора?

Я попробовал доработать исходный пример и запустил его на Visual Studio 2015 и на GCC-6.3, никаких проблем не обнаружил:

https://ideone.com/TbjBEN.

Поэтому для начала хотелось бы понимать, о какой версии студии идет речь, а так же увидеть минимальный рабочий пример, воспроизводящий проблему.