如何解决是否可以将数组中的值用于结构的隐式聚合初始化/分配?
我有一个结构
struct RGB {
int r;
int g;
int b;
}
我知道可以使用聚合初始化:
RGB rgb = {255,255,255};
我想知道是否可以为它分配一个数组。我已经尝试过这些解决方案,但它们不起作用:
int rgb_array[] = {255,255};
rgb = rgb_array; //error
std::array<int,3U> rgb_array2 = {255,255};
rgb = rgb_array2; //error
有没有办法做到这一点?
如果需要,我愿意对我的问题进行更正或澄清。谢谢。
解决方法
如果你想你可以这样做,在struct RGB内部重载运算符,只要你知道数组的顺序是r,g,b
#include <iostream>
struct RGB {
int r;
int g;
int b;
RGB() = default;
RGB(const int (&arr)[3]) {
this->r = arr[0];
this->g = arr[1];
this->b = arr[2];
}
};
int main() {
int arr[] = { 1,2,3 };
//with initialization
//RGB rgb = arr;
//with assignment
//RGB rgb;
//rgb = arr;
std::cout << rgb.r << ',' << rgb.g << ',' << rgb.b << std::endl;
return 0;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。