Ben*_*key 12 c++ struct anonymous-types
我仍在赚取我的C++翅膀; 我的问题是,如果我有这样的结构:
struct Height
{
int feet;
int inches;
};
Run Code Online (Sandbox Code Playgroud)
然后我有一些像这样的行:
Height h = {5, 7};
Person p("John Doe", 42, "Blonde", "Blue", h);
Run Code Online (Sandbox Code Playgroud)
我喜欢通过花括号初始化结构,但我更喜欢上面的一行,在一个匿名的Height结构中.我该怎么做呢?我最初的天真方法是:
Person p("John Doe", 42, "Blonde", "Blue", Height{5,7});
Run Code Online (Sandbox Code Playgroud)
但这并没有奏效.我离标记太远了吗?
Jam*_*lis 16
你不能,至少不是现在的C++; 大括号初始化是初始化器语法的一部分,不能在别处使用.
您可以添加构造函数Height:
struct Height
{
Height(int f, int i) : feet(f), inches(i) { }
int feet, inches;
};
Run Code Online (Sandbox Code Playgroud)
这允许您使用:
Person p("John Doe", 42, "Blonde", "Blue", Height(5, 7));
Run Code Online (Sandbox Code Playgroud)
不幸的是,由于Height不再是聚合,您不能再使用大括号初始化.构造函数调用初始化同样简单:
Height h(5, 7);
Run Code Online (Sandbox Code Playgroud)