我想定义的类成员a,b利用结构化的绑定,在类似如下的方式:
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)
我想定义类成员......使用结构化绑定
有什么方法可以用结构化绑定重写它以便编译吗?
不可以。您不能将结构化绑定作为成员。
或者我必须放弃使用结构化绑定并分别定义每个成员:
那将是格式良好的。
无论您如何声明成员,都不清楚您为什么要将成员成员的副本作为直接成员。我建议重新考虑您的设计。