使用结构化绑定定义类成员

yoy*_*yoy 1 c++

我想定义的类成员ab利用结构化的绑定,在类似如下的方式:

struct AB {
  int a;
  int b;
};

class MyClass {
  public:
    MyClass(AB ab) : ab{ab} {}

  private:
    AB ab;
    const auto [a, b] = ab;
}
Run Code Online (Sandbox Code Playgroud)

但是,使用 gcc 9.2.0 这会导致编译器错误:

error: expected unqualified-id before ‘[’ token
   12 |     const auto [a, b] = ab;
Run Code Online (Sandbox Code Playgroud)

有什么方法可以用结构化绑定重写它以便编译吗?或者我必须放弃使用结构化绑定并分别定义每个成员:

  const int a = ab.a;
  const int b = ab.b;
Run Code Online (Sandbox Code Playgroud)

eer*_*ika 5

我想定义类成员......使用结构化绑定

有什么方法可以用结构化绑定重写它以便编译吗?

不可以。您不能将结构化绑定作为成员。

或者我必须放弃使用结构化绑定并分别定义每个成员:

那将是格式良好的。

无论您如何声明成员,都不清楚您为什么要将成员成员的副本作为直接成员。我建议重新考虑您的设计。