C初始化匿名结构

前端之家收集整理的这篇文章主要介绍了C初始化匿名结构前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我还在赚我的C翼;我的问题是如果我有一个这样的结构:
struct Height
{
    int feet;
    int inches;
};

然后我有一些这样的行:

Height h = {5,7};
Person p("John Doe",42,"Blonde","Blue",h);

我喜欢通过花括号的结构体的初始化,但我更喜欢上面的一行,在一个匿名的高度结构.我该如何做?我最初的天真做法是:

Person p("John Doe",Height{5,7});

这不行.我离我很远吗?

解决方法

你不能,至少不在今天C;括号初始化是初始化程序语法的一部分,不能在别处使用.

您可以向Height添加构造函数

struct Height
{
    Height(int f,int i) : feet(f),inches(i) { }
    int feet,inches;
};

这允许您使用:

Person p("John Doe",Height(5,7));

不幸的是,由于Height不再是聚合,所以您不能再使用括号初始化.构造函数调用初始化同样简单:

Height h(5,7);
原文链接:https://www.f2er.com/c/115088.html

猜你在找的C&C++相关文章