C++ 分配数组-“;无法从双精度*转换为双精度[]”;

C++ 分配数组-“;无法从双精度*转换为双精度[]”;,c++,arrays,C++,Arrays,我已经解决这个问题好几个小时了,所以答案可能是显而易见的,我错过了它,但我不断得到错误: C2440:“=”:无法从“double*”转换为“double[7]” IntelliSense:表达式必须是可修改的左值 以下是有问题的代码: #include <iostream> #include <string> #include <iomanip> using namespace std; class SnowData { private: int

我已经解决这个问题好几个小时了,所以答案可能是显而易见的,我错过了它,但我不断得到错误: C2440:“=”:无法从“double*”转换为“double[7]” IntelliSense:表达式必须是可修改的左值

以下是有问题的代码:

#include <iostream>
#include <string>
#include <iomanip>
using namespace std;

class SnowData
{
private:
    int dates[7];
    double inches[7];
    string monthName;
    int startdate;
public:
    SnowData(string _monthName, int _startdate, double* _inches)
    {
        inches = _inches;
        monthName = _monthName;
        startdate = _startdate;
    }
#包括
#包括
#包括
使用名称空间std;
类数据
{
私人:
国际日期[7];
双英寸[7];
弦月名;
国际标准日期;
公众:
SnowData(字符串\u monthName,整数开始日期,双*英寸)
{
英寸=_英寸;
蒙特纳姆=_蒙特纳姆;
开始日期=_开始日期;
}

我只需要将构造函数中的
\u inches
放入我的
inches
数组中,我就可以最终完成这个问题。

就像@chris说的,你不能分配数组。但是,你可以分配单个元素(只要它们有合适的
=
操作符)

for(int i=0;i<7;++i){
英寸[i]=_英寸[i];
}
这将遍历
英寸
,并在
\u英寸
中为每个元素分配相应的on


警告:未定义的行为是
\u英寸
大小小于7。

如果必须使用低级数组,则可能需要将元素从输入数组单独复制到成员数组。不能只将指针值分配给数组。

不能这样分配数组。应该添加在您的方法中,_inches所指的“_inches”的数字,并以这种方式使用memcopy:

memcpy(inches, _inches, _inches_count * sizeof(double));

不要忘了检查_inches_count是否小于7!

数组是不可分配的。请使用
std::array
。哦,您可能还应该使用构造函数初始值设定项列表。实际上,每个成员都被默认初始化,然后分配给,而不是简单地初始化为参数。
std::copy(\n)
可以这样做,所以你也可以使用它。多亏这个解决了我的问题,我本应该知道这样做的,但我的睡眠不足使我无法正确思考>。是的,我只需要等待最短的时间来标记“已解决”。在这种情况下是这样的,但很容易将一种情况下有效的东西错误地应用到另一种情况。使用
 ST::C++中的<>代码>代码> MyCPy < /代码>仅适用于C代码
memcpy(inches, _inches, _inches_count * sizeof(double));