初始化所有结构成员
Initialize all struct members
这个问题涉及任何c++的普通数据定义,其中有一个构造函数将所有数据成员作为参数并对其进行初始化。使用这种扩展过的初始化列表的唯一原因是为了防止只指定部分结构的错误。
下面是编写这种结构的典型方法:struct Struct {
A a;
B b;
C c;
Struct(A a, B b, C c) : a(a) , b(b), c(c) {}
};
值得注意的是,每个成员的类型写了两次,名称写了四次。实际上,这意味着这些结构体的代码是相当可压缩的。在c++中是否有更短的方法来编写这个结构?
如果你的结构体不包含任何指针,你可以在c++ 11中使用聚合初始化器。
#include <iostream>
using namespace std;
struct xxx {
int a, b, c;
};
int main() {
// your code goes here
xxx x{1,2,3};
cout << x.a << x.b << x.c;
return 0;
}
有趣的问题。我认为没有更短的写法了,尤其是在这里,大多数名字都是一个字母;)
一般来说,c++类型定义倾向于高度重复。例如,必须重复所有构造函数和析构函数的类型名称。不幸的是,我认为唯一的解决方案是让工具为您生成代码。
在某些情况下,您可能会发现使用std::par<A, B>
或std::tuple<A, B, C>
很有用。
std::tuple<A, B, C> t = std::make_tuple(a, b, c);
相关文章:
- 如何在C++中定义静态成员结构
- 使用模板化类的成员结构
- 初始化固定的 C 数组成员结构
- 指向成员结构的指针如何工作
- 如何将此“指针从外部类传递到成员结构
- 导致IAR ARM中出现错误的成员结构位字段元素的Initializer列表初始化
- 映射文件中成员结构的地址
- Visual C++ 模板类成员结构初始化语法糖
- C :初始化成员结构的静态字段的正确方法
- 如何在C 类的初始化器列表中使用未命名结构初始化成员结构
- 从成员结构的成员函数中访问类的成员?
- 模板化类的成员函数无法返回指向成员结构的指针?
- 重载非类型模板结构的成员结构的复制赋值运算符
- 灵气属性传播问题与单成员结构.
- 将具有 int* 成员C++结构编接到 C#
- 复杂的班级成员结构
- 将向量成员(结构)传递给函数
- 成员结构的前向声明
- 重载运算符<<用于模板结构中定义的成员结构
- 返回带有模板化类的类成员结构