Здравствуйте, misha_sk, Вы писали:
_>Существует такая необходимость, так есть некоторая иерархия объектов, т.е. подчиненные объекты должны иметь ссылочную информацию на их собственников, но выносить ее в интерфейс не хотелось бы. Поэтому я бы хочу создать объект класса С++, инициализировать, а потом уже вернуть ссылку на COM-интерфейс, который он реализует.
_>COM-объекты пишутся при помощи ATL.
_>Вопрос: как правильно инициализировать в этом случае объект?
Я делаю примерно так:
CComObject<CASPOEnumAccount>* pEnum = NULL;
hr = CComObject<CASPOEnumAccount>::CreateInstance(&pEnum);
if (FAILED(hr))
{
return hr;
}
pEnum->Init(pAccounts); // инициализация
return pEnum->QueryInterface(pVal);
Где pVal — [out]-параметр функции, имеющий тип IASPOEnumAccount**