Russian Qt Forum
Ноябрь 01, 2024, 11:21 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: проблема с экспортом класса  (Прочитано 2786 раз)
dr_Begemot
Гость
« : Ноябрь 12, 2009, 13:59 »

Есть два класса СClass1 и CClass2. CClass2 порожден от класса CClass1.
Так-же есть класс CMain.

Классы СMain и CClass1 экспортриуется.

Код:
QAXFACTORY_BEGIN("{EDDCD047-CF0D-4418-B386-71B98DBCD9FE}", 
"{6991C64F-0665-47c5-99F6-F82FD3B79D83}")
QAXCLASS(CMain)
QAXCLASS(CClass1)
QAXFACTORY_END()

У класса CMain есть метод, возвращающий в качестве результата класс CClass1.
В MFC клиенте вызов происходит следующим образом:

Код:
	CWnd* pWnd = GetDlgItem(IDC_MAIN1);
ICMainPtr pMain;
if(pWnd){
IUnknownPtr pIUnknown = pWnd->GetControlUnknown();
pIUnknown.QueryInterface(DIID_ICMain, (void**)&pMain);
}

ICClass1Ptr pClass;
pClass = pMain->getMyClass();
try{
pClass->startAnyMethod();
}catch(_com_error &er){
str = er.ErrorMessage();
}

А теперь внимание вопрос:

Если метод CMain::getMyClass реализован так:
Код:
CClass1 *CMain::getMyClass(){
  CClass1 *c = new CClass1();
  return c;
}

То все отлично работает!
Но если он реализван так:
Код:
CClass1 *CMain::getMyClass(){
  CClass2 *c = new CClass2();
  return (CClass1*)c;
}

То в клиенте программа вылетает при попытке вызова pClass->startAnyMethod();, причем не в блок catch!!!
В чем тут может быть дело?
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.287 секунд. Запросов: 21.