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



我想使用结构化绑定定义类成员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;

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

有没有什么方法可以用结构化绑定重写它,使其编译?

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

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

这将是一个很好的形式。

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

最新更新