c ++使用&从数组中的对象创建指针成员[错误]

时间:2016-01-21 17:02:59

标签: c++ arrays function object

您好我很抱歉这不是一个难题。我试图让指针调用该对象在数组中起作用。块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;
    }

1 个答案:

答案 0 :(得分:0)

您是说您的代码无法编译?对我来说似乎很好。

Howerver我可以看到在运行时看到一些问题。

首先,在内部循环中,您将实例化块对象21次,但您只对该数组的前6个元素进行操作。因此,当您在最后一个循环中从0迭代到28时,您将获得自7日以来抛出的异常,并且未实例化其他元素。这是因为此数组的第7个元素未实例化。它指向一些只是垃圾的内存位置。

另一个问题是当你覆盖你的指针时,你会丢失已创建对象的信息,这会导致内存泄漏。也许你应该熟悉智能指针概念?

使用std::vectors代替vanila数组。或者使用std::array

您还应该熟悉迭代器的概念。