您好我很抱歉这不是一个难题。我试图让指针调用该对象在数组中起作用。块id是关键,但我似乎无法让它运行。
blocks* objects[28];
int index = 0;
for (int i = 0; i < 6; i++)
{
for (int j = i + 0; j < 6; j++)
{
objects[index] = new blocks(key, i, j);
key = key + 1; //used to make sure each block can id with a key
index = index + 1;
}
}
for (int i = 0; i < 28; i++)
{
double id = objects[i]->getblockid(); //FIXED
cout << "Object is: " << i << " id is: " << id << endl;
}
答案 0 :(得分:0)
您是说您的代码无法编译?对我来说似乎很好。
Howerver我可以看到在运行时看到一些问题。
首先,在内部循环中,您将实例化块对象21次,但您只对该数组的前6个元素进行操作。因此,当您在最后一个循环中从0迭代到28时,您将获得自7日以来抛出的异常,并且未实例化其他元素。这是因为此数组的第7个元素未实例化。它指向一些只是垃圾的内存位置。
另一个问题是当你覆盖你的指针时,你会丢失已创建对象的信息,这会导致内存泄漏。也许你应该熟悉智能指针概念?
使用std::vectors
代替vanila数组。或者使用std::array
。
您还应该熟悉迭代器的概念。