c++ - 是否可以在构造函数的成员初始值设定项列表中使用结构化绑定(bind)?

标签 c++ constructor c++17

我想创建一个包含多个 const 成员变量的类。不幸的是,我需要初始化这些变量的函数来自一个非常 C 风格的外部库。因此,我一直在雇用以下各种“中间人”:

struct Struct {
    int foo, bar;
    Struct(int baz, int qux) {
        initializerFunction(&foo, baz, &bar, qux);
    }
}
class Class {
    const int foo, bar;
    Class(Struct s) : anArray(s.foo), anotherArray(s.bar) {}
public:
    Class(int baz, int quz) : Class(Struct(baz, qux)) {}
}

不过,我有点不喜欢这种结构。我希望能够改为做这样的事情:

class Class {
    const int foo, bar;
public:
    Class(int baz, int qux) : [foo, bar](Struct(baz, qux)) {}
}

有没有可能我只是使用了不正确的语法,或者在构造函数的成员初始化列表中确实不允许结构化绑定(bind)?

最佳答案

结构化绑定(bind)声明变量(好吧,它们本身不是“变量”,但没关系)。您不能使用结构化绑定(bind)来操作现有对象。这包括成员对象。

关于c++ - 是否可以在构造函数的成员初始值设定项列表中使用结构化绑定(bind)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69729216/

相关文章:

c++ - 由于意外的模板参数类型推导而导致的无限递归

c++ - 将不相等的行读入 vector 的 vector

c++ - 返回无效或引用 self ?

java - java中构造函数的作用是什么

c++ - 何时在构造函数中使用 {} ()

java - Stackoverflow 是由简单的代码引起的

c++ - 两个 Actor 的交集 - Vtk

c++ - OpenGL 3.3 中的多纹理和多光源

c++ - 新表达式的模板参数推导失败

c++ - std::optional 和 boost::optional 是否遵守托管对象的对齐限制?