C++避免输入构造函数
我有一个带有例如 16 个字段的结构,并且想稍后用初始化器列表初始化该结构。
有没有办法避免在构造函数中重新输入所有这些(假设我想以确切的顺序初始化所有这些)?即使它们都是普通的旧数据?
除了乏味之外,在我看来,还有一些我不知道的方法可以做到这一点。
struct Foo {
int A;
int B;
Bar* C;
// ...
Foo (
int A,
int B,
Bar* C,
// ...
) :
A(A),
B(B),
C(C),
// ...
{}
}
Foo MyFoo = {
// ...
}
回答
由于您的数据成员是公开的,您实际上可以通过减少您拥有的代码量来做到这一点。简单地不提供构造函数:
struct Foo {
int A;
int B;
Bar* C;
// ...
};
然后你可以构造一个Foo这样的:
Foo foo{1, 2, new Bar{}, /* ... */ };
或者
Foo foo = {1, 2, new Bar{}, /* ... */ };