C++ 如何避免一些值的简单组的长构造函数?

C++ 如何避免一些值的简单组的长构造函数?,c++,constructor,struct,grouping,shortcut,C++,Constructor,Struct,Grouping,Shortcut,我想将一些值分组,例如在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 deci

我想将一些值分组,例如在
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)));
typedef结构对;
结构对象(make_-pair('c',make_-pair(42,12.3));
但是对于更多的值,使用
.first
.second
获取正确的值会变得非常混乱。实际上,我想把五种价值观归为一组。为此使用嵌套对似乎有点老套


是否有用于设置所有成员或类似内容的构造函数?有什么方法可以简单地对一些值进行分组,而不必为它们编写构造函数?

首先,您可以使用,它基本上是一组不同类型的值:

std::tuple<char, int, float> object('c', 42, 12.3f);

structure object={'c',42,12.3}应该可以工作。另外,一个<代码> STD::tuple < /C> >最好是嵌套<代码> STD::配对< /Cult> s,具有两个以上的值。检查,它是“代码> STD::配对< /Calp>类固醇。您只保存原始类型,还是类似的聚合?现在,它只是关于原始类型。@ ScVIEW用于VisualC++,恐怕聚合初始化仅在Visual Studio 2012 Update 2上可用。这还没有发布,但是有一个社区技术预览(CTP),它不是针对生产代码的
从石器时代(或K&R C,以先到者为准)开始工作。@bopersson,只要你不违反吊舱规则:这里就是这样。
structure object = {'c', 42, 12.3f};
// or even
structure object{'c', 42, 12.3f};