是否可以以这样的方式实现一个类,以便可以将其初始化,就像它是POD一样

1 c++ constructor pod c++11

我有一个类(让我们命名TheClass)在以下情况下经常使用:几个实例是从常量构造的,并作为几个参数传递给其他一些构造函数.不幸的是,我必须使用相当繁琐的语法进行初始化:

Otherclass{ TheClass{1, 'a', 2}, 
            TheClass{1, 'b', 4},
            TheClass{3, 'h', 2}, 
            TheClass{1, 't', 8} }
Run Code Online (Sandbox Code Playgroud)

有没有办法可以将类初始化为POD?即我想能够写

Otherclass{ {1, 'a', 2}, 
            {1, 'b', 4},
            {3, 'h', 2}, 
            {1, 't', 8} }
Run Code Online (Sandbox Code Playgroud)

编辑:我已经发布了另一个问题,正确定义了我面临的问题.请参阅是否可以将数据作为initializer_list传递给std :: array of structures?

Juh*_*man 5

这应该做你想要的.或者你可以typedef TheClass t;或者像这样定义一个宏:#define _(x) TheClass x然后#undef它.

#include <initializer_list>
class TheClass {
public:
  TheClass(int x, char y, int z) { }
};

class OtherClass {
public:
  OtherClass(std::initializer_list<TheClass> t) { }
};

int main (int argc, char **argv) {
  OtherClass s { {1,'a',2}, {1, 'b', 4}, {3, 'h', 2}, {1, 't', 8}};
  return 0;
}
Run Code Online (Sandbox Code Playgroud)