C++ 避免输入构造函数

n-s*_*its 2 c++ constructor

我有一个带有例如 16 个字段的结构,并且想稍后用初始化器列表初始化该结构。

有没有办法避免在构造函数中重新输入所有这些(假设我想以确切的顺序初始化所有这些)?即使它们都是普通的旧数据?

除了乏味之外,在我看来,还有一些我不知道的方法可以做到这一点。

struct Foo {
  int  A;
  int  B;
  Bar* C;
  // ...

  Foo (
   int  A,
   int  B,
   Bar* C,
   // ...
  ) :
   A(A),
   B(B),
   C(C),
   // ...
  {} 

}

Foo MyFoo = {
 // ...
}
Run Code Online (Sandbox Code Playgroud)

cig*_*ien 6

由于您的数据成员是公开的,您实际上可以通过减少您拥有的代码量来做到这一点。简单地不提供构造函数:

struct Foo {
  int  A;
  int  B;
  Bar* C;
  // ...
};
Run Code Online (Sandbox Code Playgroud)

然后你可以构造一个Foo这样的:

Foo foo{1, 2, new Bar{}, /* ... */ };
Run Code Online (Sandbox Code Playgroud)

或者

Foo foo = {1, 2, new Bar{}, /* ... */ };
Run Code Online (Sandbox Code Playgroud)