当前位置:  开发笔记 > 编程语言 > 正文

C++初始化匿名结构

如何解决《C++初始化匿名结构》经验,为你挑选了1个好方法。

我仍在赚取我的C++翅膀; 我的问题是,如果我有这样的结构:

struct Height
{
    int feet;
    int inches;
};

然后我有一些像这样的行:

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

我喜欢通过花括号初始化结构,但我更喜欢上面的一行,在一个匿名的Height结构中.我该怎么做呢?我最初的天真方法是:

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

但这并没有奏效.我离标记太远了吗?



1> James McNell..:

你不能,至少不是现在的C++; 大括号初始化是初始化器语法的一部分,不能在别处使用.

您可以添加构造函数Height:

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

这允许您使用:

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

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

Height h(5, 7);


@byte:`struct`与`class`完全相同.唯一的区别是对于`struct`,基类和成员默认是public,对于`class`是私有的.
推荐阅读
虎仔球妈_459
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有