Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Visual C++/MFC/WTL > Множественное наследование в MFC |
Автор: deniska 21.9.2021, 13:54 | ||
Тут есть еще кто живой? Работаю над графической библиотекой оконных компонентов, столкнулся вот с чем:
в родительском окне, в DoDataExchange в DDX_Control() вижу вменяемый адрес в памяти контрола типа CMyControl и его же в this в CMyControl::PreSubclassWindow, но как только дело доходит до обработчиков сообщений внутри CMyControl, например OnPaint, в this я получаю адрес на 48 байт больше, эти 48 как раз соответствуют sizeof(CBaseData)... если изменить порядок наследования с class CMyControl : public CBaseData, public CWnd на class CMyControl : public CWnd, public CBaseData , то с адресами становится все нормально... WTF собственно? спасибо |
Автор: _zorn_ 22.9.2021, 16:53 |
Смею предположить - "зависит от компилятора". Не спец в С++, но не думаю что в других языках просто так отказались от множественного наследования. Предлагаю его не использовать вобщем ![]() |
Автор: korian 3.10.2023, 20:37 |
А что смущает? Так оно и должно работать. Если изменить порядок, то адрес CBaseData будет смещен относительно CMyControl на sizeof(CWnd) |