我想使用结构化绑定来定义类成员a
,b
,如下所示:
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;
答案 0 :(得分:5)
我想使用结构化绑定来定义类成员
是否可以通过结构化绑定重写它以便编译?
不。您不能将结构化绑定作为成员。
或者我必须放弃使用结构化绑定并分别定义每个成员:
那会很好。
无论您如何声明成员,都不清楚为什么要将成员的副本作为直接成员。我建议重新考虑您的设计。