如何避免为某些值的简单组使用长构造函数
How to avoid long constructors for simple groups of some values?
我想对一些值进行分组,例如在struct
中,并在创建对象时轻松设置它们。
struct structure
{
char letter;
int number;
float decimal;
};
structure object('c', 42, 12.3); // this doesn't work
我知道我可以这样手工编写一个构造函数。
struct structure
{
structure(char letter, int number, float decimal) : letter(letter), number(number), decimal(decimal) {}
char letter;
int number;
float decimal;
};
structure object('c', 42, 12.3); // this of course do work
但是这样做很烦人,因为您必须两次和三次提到每个成员。但是我只是想把一些值分组…
如果我只有五个值中的三个,我将使用std::pair
并嵌套它们。
typedef structure pair<char, pair<number, decimal>>;
structure object(make_pair('c', make_pair(42, 12.3)));
但是对于一些更多的值,使用.first
和.second
获取正确的值变得非常混乱。实际上,我想把五个值归为一组。使用嵌套对似乎有点粗糙。
是否有用于设置所有成员的构造函数或类似的东西?我有什么替代方案可以简单地将一些值分组,而不为它们编写构造函数?
首先,您可以使用std::tuple
,它基本上是不同类型的值的集合:
std::tuple<char, int, float> object('c', 42, 12.3f);
您可以使用std::get
访问元素。例如,要访问char
,您可以使用std::get<0>(object)
。
structure object = {'c', 42, 12.3f};
// or even
structure object{'c', 42, 12.3f};
相关文章:
- 处理简单 cpp 类构造函数中的错误
- 有没有一种简单的方法可以在对象向量上调用构造函数?
- 简单构造函数的复杂编译器输出
- 简单矩阵类,错误:调用私有构造函数
- 简单的类构造函数初始化错误
- 构造函数主体中的简单指针语法出现问题
- 错误:在非常简单的示例中,预期的构造函数、析构函数或类型转换
- 超简单C++构造函数查询
- 在简单继承之后调用复制构造函数
- c++ 中带有简单构造函数的向量和自定义类的问题
- 我可以只从声明生成一个简单的构造函数吗?
- 具有复制构造函数、简单赋值运算符和简单析构函数的动态大小的文本对象
- 为简单结构定义哪个复制/移动构造函数/运算符
- 'explicit' g ++ 中的关键字对简单构造函数(不是复制/赋值构造函数)没有影响?
- 为简单向量实现复制构造函数
- 可变模板类中的(简单)构造函数
- 你能用英语尽可能简单地解释一下什么是复制构造函数,什么时候需要使用它吗?
- 为什么当我创建一个对象数组时调用默认构造函数,但当我将obj创建为简单变量时却出错
- 简单构造函数初始化列表
- 从简单的arrayfire构造函数中获取seg错误