是否可以以这样一种方式实现一个类,即可以将其值初始化为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
我有一个类(让我们将其命名为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;
}
相关文章:
- 如何在 malloc 内存中初始化非 POD 数据
- 使用 std::index_sequence 初始化具有固定大小数组成员的 POD 结构容器
- 非 POD 的零初始化
- 如何让MSVC编译器优化多步POD初始化?
- 默认情况下初始化时 POD 是否给予特殊处理 (C++14)?
- 类POD成员变量初始化
- C++函数中的多线程静态 POD 初始化
- 初始化新对象时C++默认构造函数和 POD 问题
- POD成员默认初始化无括号
- 视觉C++似乎正在零初始化一个不应该的类的 POD 成员
- 如何在派生类中初始化继承的模板POD结构
- 构造函数初始化列表中POD类型的初始化
- 使用初始化列表的 POD 类型初始化不起作用
- 继承的 POD 类型的值初始化
- 初始化POD数组中的第一个元素,保持其余元素未初始化
- POD变量的直接初始化不起作用,但当将变量推到向量上时,复制初始化起作用
- POD 类对象初始化是否需要构造函数
- 为什么在初始化项列表中初始化 POD 数据时必须使用 C 样式类型转换
- 如何使用C++中的括号语法初始化POD数组
- 获取默认初始化(NOT value/零初始化)POD作为右值