用结构化绑定定义类成员

时间:2020-03-08 00:11:23

标签: c++

我想使用结构化绑定来定义类成员ab,如下所示:

struct AB {
  int a;
  int b;
};

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

  private:
    AB ab;
    const auto [a, b] = ab;
}

但是,对于gcc 9.2.0,这会导致编译器错误:

error: expected unqualified-id before ‘[’ token
   12 |     const auto [a, b] = ab;

是否可以通过结构化绑定重写它以便编译?还是我必须放弃使用结构化绑定并分别定义每个成员:

  const int a = ab.a;
  const int b = ab.b;

1 个答案:

答案 0 :(得分:5)

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

是否可以通过结构化绑定重写它以便编译?

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

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

那会很好。

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

相关问题