C++ 使用结构化绑定定义类成员
我想使用结构化绑定定义类成员a、b,如下所示:C++ 使用结构化绑定定义类成员,c++,C++,我想使用结构化绑定定义类成员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 |
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;
我想定义类成员。。。使用结构化绑定
有没有什么方法可以用结构化绑定重写它,这样它就可以编译了
不可以。不能将结构化绑定作为成员
或者我必须放弃使用结构化绑定并分别定义每个成员:
const int a = ab.a;
const int b = ab.b;
这将是一个很好的形式
无论您如何声明成员,都不清楚您为什么希望将成员的副本作为直接成员。我建议重新考虑你的设计
我想定义类成员。。。使用结构化绑定
有没有什么方法可以用结构化绑定重写它,这样它就可以编译了
不可以。不能将结构化绑定作为成员
或者我必须放弃使用结构化绑定并分别定义每个成员:
const int a = ab.a;
const int b = ab.b;
这将是一个很好的形式
无论您如何声明成员,都不清楚您为什么希望将成员的副本作为直接成员。我建议您重新考虑您的设计。是否可以选择MyClass:private AB类?这应该是你想要的。你确定你的gcc是用c++17标准编译的吗?是的-我用g++-std=c++17 c++2a编译不起作用,但是类MyClass:private是一个选项吗?这应该是你想要的。并且不会复制所有数据。您确定您的gcc使用c++17标准进行编译吗?是的-我使用g++-std=c++17 c++2a进行编译也不起作用