c++ - 初始化结构成员数组时出错
问题描述
我有这个结构:
template<int N>
struct XYarr
{
double x[N],y[N];
int size() {return N;}
};
当我尝试初始化它(并通过函数返回它)
return XYarr<size>{x2, y2}; //x2 and y2 are arrays double[size]
我收到以下错误:无法使用“double [200]”类型的左值初始化“double”类型的数组元素。问题是什么?
解决方案
原始数组没有值语义。因此,它们不能使用=
运算符初始化或分配,需要显式复制。例如,使用这样的构造函数:
#include <algorithm>
template<int N>
struct XYarr
{
double x[N], y[N];
XYarr(const double(&x2)[N], const double(&y2)[N]) {
std::copy(std::begin(x2), std::end(x2), x);
std::copy(std::begin(y2), std::end(y2), y);
}
int size() const { return N; }
};
int main() {
double x2[4]{}, y2[4]{};
XYarr<4> test{ x2, y2 };
}
推荐阅读
- ruby-on-rails - 捆绑器:在使用 gem 进行捆绑安装期间找不到带有可执行捆绑包 (Gem::GemNotFoundException) 的 gem bundler (>= 0.a)
- json - 删除飞镖中的重复值
- blazor - 如何使用 Blazor 更改 div 元素的类
- notifications - Exoplayer 通知图像添加
- r - 试图围绕我的 tibble 创建代码包装一个函数
- java - 为什么@Validated + @Component + 实现在spring boot中导致类型误导错误?
- android - 虽然 sdk maneger 中的 build-tools 28.0.3 已经下载,但我仍然只能在 gradle 中添加库依赖 27.1.1。我所做的?
- xbox-one - 创作:XBOX ONE (MultiAVCHD) 上无法使用的蓝光菜单
- git - 当我在本地系统中克隆我的存储库时,它只会显示一个分支
- json - 使用 python 将嵌套的 Json 转换为 CSV,每行具有唯一的第一列