gpt4 book ai didi

C++初始化匿名结构

转载 作者:IT老高 更新时间:2023-10-28 23:13:53 25 4
gpt4 key购买 nike

我仍在赢得我的 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});

但这没有用。我是不是离题太远了?

最佳答案

你不能,至少在当今的 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);

关于C++初始化匿名结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4020791/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com