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