是否可以以这样一种方式实现一个类,即可以将其值初始化为POD

Is it possible to implement a class in such a way that it would be possible to value initialize it as if it was POD

本文关键字:初始化 POD 实现 一种 方式 是否 一个      更新时间:2023-10-16

我有一个类(让我们将其命名为TheClass),它经常用于以下情况:几个实例由常量构造,并作为几个参数传递给其他构造函数。不幸的是,我不得不使用相当麻烦的语法进行初始化:

Otherclass{ TheClass{1, 'a', 2}, 
            TheClass{1, 'b', 4},
            TheClass{3, 'h', 2}, 
            TheClass{1, 't', 8} }

有没有一种方法可以将类初始化为POD?我想写

Otherclass{ {1, 'a', 2}, 
            {1, 'b', 4},
            {3, 'h', 2}, 
            {1, 't', 8} }

编辑:我发布了另一个问题,对我面临的问题有正确的定义。请参阅是否可以将数据作为initializer_list传递给结构的std::数组?

这应该是您想要的。或者,您可以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;
}