Извините, если это основной c вопрос. По сути, я реализую класс с кучей статических c (и неизменных) ресурсов, которые будут использоваться всеми экземплярами. Ресурсы stati c необходимо инициализировать один раз, передав их в качестве выходных параметров различным функциям. Я не был уверен, как это сделать элегантно. На данный момент я помещаю все необходимые вызовы функций в лямбда-выражение или частную функцию-член, а затем вызываю эту функцию в конструкторе статическим c способом, например:
HRESULT MyClass::FinalConstruct()
{
static HRESULT hr = []() {
HRESULT hr;
// Call necessary initializing functions,
// passing static variables as out-parameters. For example:
// (s_pUIA and s_pUIATreeWalker are static smart pointers that
// need to be initialized)
hr = CoCreateInstance( __uuidof(CUIAutomation),
NULL,
CLSCTX_INPROC_SERVER,
IID_PPV_ARGS(&s_pUIA) );
if (FAILED(hr))
{
ATLTRACE("\nFailed to instantiate IUIAutomation object.\n");
return hr;
}
hr = s_pUIA->get_ControlViewWalker(&s_pUIATreeWalker);
if (FAILED(hr))
{
ATLTRACE("\nFailed to get IUIAutomation tree walker.\n");
return hr;
}
// ...
return hr;
}();
return hr;
}
Я не был уверен, есть ли более приемлемый способ сделать это. Большое спасибо за любой вклад.