在构造函数中使用输出参数函数初始化const成员的调用的代码比lambda简单

塞尔吉奥

在标题中,我有

class CSomeClass
{
    const GUID m_guid;

public:
    CSomeClass();
///...
}

并在源文件中

CSomeClass::CSomeClass()
    , m_guid(
        []() {
        GUID g;
        ::CoCreateGuid(&g);
        return g;
        }()
    )
{
}

如您所知,指南可以用作不希望更改的标识。给定该::CocreateGuid()函数提供了我想要的输出参数,而不是返回它,我不能直接使用对该函数的简单调用来初始化m_guid成员字段,即常量。

因此,其恒定性的结果是必须在初始化程序列表的左方括号之前对其进行初始化,因此不能::CocreateGuid()在构造函数主体中简单地为其分配调用

有没有比此lambda表达式更简单的方法来初始化它?

贾罗德42

当lambda表达式正确时,我将为此使用辅助函数:

GUID create_guid()
{
    GUID g;
    ::CoCreateGuid(&g);
    return g;
}

CSomeClass::CSomeClass() : m_guid(create_guid()) {}

另外,create_guid()它本身具有含义,可以重用(即使实现细节是可能的/正确的)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

初始化 const 成员并使用父构造函数

来自分类Dev

如何使用std :: array构造函数参数C ++列表初始化const std :: array成员

来自分类Dev

使用构造函数的参数初始化向量成员

来自分类Dev

为什么可以在构造函数中使用成员初始化来满足显式构造函数的参数呢?

来自分类Dev

在Dart中的可选参数构造函数中使用构造函数初始化成员

来自分类Dev

调用非默认构造函数作为成员初始化

来自分类Dev

c ++构造函数成员初始化:传递参数

来自分类Dev

每个构造函数成员初始化器列表初始化const数据成员,错误:没有匹配的调用函数

来自分类Dev

在可变参数构造函数中初始化const数组

来自分类Dev

在类声明或构造函数初始化器列表中初始化简单成员

来自分类Dev

使用委托构造函数时的成员初始化

来自分类Dev

使用委托构造函数进行成员初始化

来自分类Dev

使用 Castle Windsor 在服务类的构造函数中使用参数化构造函数初始化类

来自分类Dev

在C ++中的自定义类的构造函数中初始化没有参数的静态const类成员

来自分类Dev

使用类成员函数/变量初始化默认参数

来自分类Dev

如何在初始化块中使用构造函数参数

来自分类Dev

如何在构造函数中使用额外的参数正确初始化dict的子类?

来自分类Dev

在构造函数的可变参数中使用其他模板类执行模板类的初始化

来自分类Dev

如何在类构造函数中使用参数初始化std :: array的大小?

来自分类Dev

在构造函数中使用可变参数初始化std :: tuple

来自分类Dev

在 Dart 中使用固定参数初始化超级构造函数的最佳方法?

来自分类Dev

使用统一初始化调用副本构造函数

来自分类Dev

在构造函数初始化列表中使用 std::variant

来自分类Java

在Java中使用初始化程序与构造函数

来自分类Dev

如何在构造函数的成员初始化器列表中调用两个函数?

来自分类Dev

如何访问初始化函数中不是成员变量的构造函数参数?

来自分类Dev

为什么在构造函数初始化程序中初始化 const char 数组成员不兼容?

来自分类Dev

为什么成员初始化程序在移动时会调用额外的构造函数调用?

来自分类Dev

从构造函数中的std :: istream初始化const类数据成员

Related 相关文章

  1. 1

    初始化 const 成员并使用父构造函数

  2. 2

    如何使用std :: array构造函数参数C ++列表初始化const std :: array成员

  3. 3

    使用构造函数的参数初始化向量成员

  4. 4

    为什么可以在构造函数中使用成员初始化来满足显式构造函数的参数呢?

  5. 5

    在Dart中的可选参数构造函数中使用构造函数初始化成员

  6. 6

    调用非默认构造函数作为成员初始化

  7. 7

    c ++构造函数成员初始化:传递参数

  8. 8

    每个构造函数成员初始化器列表初始化const数据成员,错误:没有匹配的调用函数

  9. 9

    在可变参数构造函数中初始化const数组

  10. 10

    在类声明或构造函数初始化器列表中初始化简单成员

  11. 11

    使用委托构造函数时的成员初始化

  12. 12

    使用委托构造函数进行成员初始化

  13. 13

    使用 Castle Windsor 在服务类的构造函数中使用参数化构造函数初始化类

  14. 14

    在C ++中的自定义类的构造函数中初始化没有参数的静态const类成员

  15. 15

    使用类成员函数/变量初始化默认参数

  16. 16

    如何在初始化块中使用构造函数参数

  17. 17

    如何在构造函数中使用额外的参数正确初始化dict的子类?

  18. 18

    在构造函数的可变参数中使用其他模板类执行模板类的初始化

  19. 19

    如何在类构造函数中使用参数初始化std :: array的大小?

  20. 20

    在构造函数中使用可变参数初始化std :: tuple

  21. 21

    在 Dart 中使用固定参数初始化超级构造函数的最佳方法?

  22. 22

    使用统一初始化调用副本构造函数

  23. 23

    在构造函数初始化列表中使用 std::variant

  24. 24

    在Java中使用初始化程序与构造函数

  25. 25

    如何在构造函数的成员初始化器列表中调用两个函数?

  26. 26

    如何访问初始化函数中不是成员变量的构造函数参数?

  27. 27

    为什么在构造函数初始化程序中初始化 const char 数组成员不兼容?

  28. 28

    为什么成员初始化程序在移动时会调用额外的构造函数调用?

  29. 29

    从构造函数中的std :: istream初始化const类数据成员

热门标签

归档