向对象数组 c++ 添加值

Adding a value to a objects array c++

本文关键字:添加 c++ 数组 对象      更新时间:2023-10-16

我创建了一个节点对象,该对象填充在 63 x 63 的数组中。在第一个值之后,它应该只访问附加到对象的数组并在该数组中放入一个值。

对象数组定义为:

node ** arr[63][63];

我的函数是这样的:

void addValue(int x, int y, float value)
{
node a = ** arr[x][y];
a.valueList[a.size] = value;
a.size = a.size + 1;
}

这个想法是,如果数组中已经有一个节点(当调用函数时,可以假设已经有一个节点(,将值添加到该位置已经存在的节点上的"valueList"。

以下是它在 Main 中的称呼方式:

if(!isValid(arr[xCount][yCount]))
{
node a(0, false, xCount, yCount);
addToArray(&a);
myFile.read((char *) &dataIn, 4);
yCount++;
}
else
{
myFile.read((char *) &dataIn, 4);
addValue(xCount, yCount, dataIn);
yCount++;
}

addValue 函数正在使程序崩溃,并且未正确将值添加到附加到对象的数组中。我猜这可能与我访问数组"arr[][]"的方式有关。

整个**arr定义的一部分,以及a的赋值 - 你在问题的文本中根本没有提到这些。这让我怀疑你实际上并不是故意把它们放在那里。听起来你想要一个node的 2D 数组,而不是指向nodes 的指针的 2D 数组。事实上,如果您错过了这一点,并且没有将节点和指针分配给节点,以便指针指向要指向的节点,那么您将出现分段错误。

顺便说一句,还要注意a是数组元素的副本,其更改不会传播到arr