在标题中,我有
class CSomeClass
{
const GUID m_guid;
public:
CSomeClass();
///...
}
并在源文件中
CSomeClass::CSomeClass()
, m_guid(
[]() {
GUID g;
::CoCreateGuid(&g);
return g;
}()
)
{
}
如您所知,指南可以用作不希望更改的标识。给定该::CocreateGuid()
函数提供了我想要的输出参数,而不是返回它,我不能直接使用对该函数的简单调用来初始化m_guid成员字段,即常量。
因此,其恒定性的结果是必须在初始化程序列表的左方括号之前对其进行初始化,因此不能::CocreateGuid()
在构造函数主体中简单地为其分配调用。
有没有比此lambda表达式更简单的方法来初始化它?
当lambda表达式正确时,我将为此使用辅助函数:
GUID create_guid()
{
GUID g;
::CoCreateGuid(&g);
return g;
}
CSomeClass::CSomeClass() : m_guid(create_guid()) {}
另外,create_guid()
它本身具有含义,可以重用(即使实现细节是可能的/正确的)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句