c++ - 将包含 C 样式数组的对象初始化为成员变量 (C++)

标签 c++ arrays constructor

考虑以下代码:

struct Color  // This struct can't be modified
{
    double grey;
    double rgb[3];
};

int main()
{
    double myRGB[3] = {2, 6, 9};

    Color c = {10, myRGB}; // This line doesn't work

    return 0;
}

如何在一行中初始化一个Color对象?

在我的真实案例场景中,Color 结构不能更改(例如,使用 std::array 代替 C 样式数组)。

最佳答案

由于 Color 是一个聚合,您可以使用 aggregate initialization并将数组初始化器直接放在大括号中,如

Color c = {10, {2, 6, 9}};

如果你必须用数组初始化c,因为它很小,你可以像这样展开它

Color c = {10, {myRGB[0], myRGB[1], myRGB[2]}};

关于c++ - 将包含 C 样式数组的对象初始化为成员变量 (C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53156499/

相关文章:

C++ 在类构造函数中定义一个常量成员变量

c# - 防止用户附加到 MS-Office 进程的开发人员运行实例

c++ - 是否定义了减去两个 NULL 指针的行为?

python - 从 .csv 文件中读取值并将它们转换为 float 组

javascript - Discord.js:是否有一个函数可以检查用户是否具有排名数组中的排名

java - java中带输入的多个构造函数的基本用法

c++ - 计算机总是按照2的补码法来表示负数吗?

c++ - 不同编译器的枚举大小(以字节为单位)

Java:如何在没有重复的情况下随机化数组列表

java - 将 Java 构造函数从抽象类和 super 关键字转换为 C# 时出错?