Здравствуйте, kiamor, Вы писали:
K>Ну ежели ты хочешь, чтобы клиент мог создавать этот самый class2 только через один из методов
K>твоего интерфейса
Да, именно это я пытаюсь сделать
K>Лепи в IDL атрибут noncreateble к коклассу и всех делов.
Я неправильно объяснил, проблема у меня именно в создании и возвращении указателя
Сейчас пытался сделать так:
Class1::connect(
/*[in]*/ BSTR User,
/*[in]*/ BSTR Pass,
/*[out]*/ IUnknown** pSrv)
{
HRESULT hr = S_OK;
CComObject<Class2> * pClass2 = NULL;
pSrv = NULL;
pClass2 = new CComObject<pClass2>;
hr = pClass2->QueryInterface( IID_IGrandSmetaSrv, reinterpret_cast<void **>(&pSrv) ) ;
if ( FAILED(hr) )
delete pClass2;
return hr;
}
В клиентской программе при выполнении этого метода все проходит отлично. Но при попытке как-то использовать объект pSrv
получаю ошибку 80004003 "Неправильный указатель".
Как правильно должен работать этот метод?