分配数组 - "无法从double *转换为double []"

时间:2014-04-16 23:57:49

标签: c++ arrays

我已经在这个问题上做了好几个小时了,所以答案可能是显而易见的,我很想念它,但我不断收到错误: 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;
    }

我只需要将构造函数中的_inches放到我的inches数组中,我终于可以完成这个问题了。

3 个答案:

答案 0 :(得分:1)

就像@chris说的那样,你无法分配数组。但是,您可以分配单个元素(前提是它们具有适当的=运算符)。

for(int i = 0; i < 7; ++i) {
    inches[i] = _inches[i];
}

这会迭代inches并在_inches中为每个元素分配相应的on。

警告:未定义的行为_inches大小小于7.

答案 1 :(得分:0)

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

答案 2 :(得分:0)

您不能以这种方式分配数组。你应该添加&#34; _inches&#34;在你的方法中由_inches指出,并以这种方式使用memcopy:

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

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