Доброго времени суток всем!
Возникла необходимость, чтобы COM-объект имел конструктор с параметром.
Код:
HRESULT hr;
CComObject<MyClass>* pMyClass = NULL;
hr = CComObject<MyClass>::CreateInstance(&pMyClass);
...........
вызывает только конструктор по умолчанию. Не пойму как передать параметр в конструктор
Заранее спасибо!
Здравствуйте Dimusik, Вы писали:
D>Возникла необходимость, чтобы COM-объект имел конструктор с параметром. Код:
D>HRESULT hr;
D>CComObject<MyClass>* pMyClass = NULL;
D>hr = CComObject<MyClass>::CreateInstance(&pMyClass);
D>...........
D>вызывает только конструктор по умолчанию. Не пойму как передать параметр в конструктор
Есть же декларация класса CComObject:
class CComObject : public Base
{
CComObject(void* = NULL)
{
_Module.Lock();
}
которая говорит, что конструктор CComObject<MyClass> вызовет
железно конструктор
без параметров для твоего класса MyClass. Нет способов обойти это, не трогая реализацию CComObject. Можно в принципе сделать шаблон CMyComObject<MyClass>, в котором реализовать свою стратегию инициализации. Это тягомотно, но осуществимо.
Другое решение — делать метод типа Init, в который можно передать параметры и который не указывается в интерфейсах. Это будет как бы отложенный конструктор. Это не лучшее решение, всё-таки конструктор уже был вызван, но другого способа нет.
Вот спасибо тебе Vi2. Разъяснил. Я вой ответ оценил "СУПЕР"