Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Множественное наследование в MFC 
:(
    Опции темы
deniska
Дата 21.9.2021, 13:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 398
Регистрация: 1.7.2005
Где: Троицк

Репутация: 1
Всего: 0



Тут есть еще кто живой?
Работаю над графической библиотекой оконных компонентов, столкнулся вот с чем:
Код

class CBaseData
{
// тут какие-то поля и методы
}

class CMyControl : public CBaseData, public CWnd
{
};


в родительском окне, в 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 собственно?
спасибо


PM MAIL ICQ   Вверх
_zorn_
Дата 22.9.2021, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 21.8.2007

Репутация: нет
Всего: 12



Цитата(deniska @  21.9.2021,  20:54 Найти цитируемый пост)
WTF собственно?

Смею предположить - "зависит от компилятора".
Не спец в С++, но не думаю что в других языках просто так отказались от множественного наследования.
Предлагаю его не использовать вобщем  smile 
PM MAIL   Вверх
korian
Дата 3.10.2023, 20:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 651
Регистрация: 8.3.2008
Где: Украина, Харьков

Репутация: 2
Всего: 17



А что смущает? Так оно и должно работать.
Если изменить порядок, то адрес CBaseData будет смещен относительно CMyControl на sizeof(CWnd)
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.1066 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.