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

c++ use & to create pointer member from objects in array [error]

本文关键字:指针 创建 成员 错误 对象 使用 数组 C++      更新时间:2023-10-16

你好,很抱歉这应该不是一个难题。我试图获取指针以调用数组中的对象函数。块 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;
    }

你是说你的代码不能编译吗?对我来说似乎很好。

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

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

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

使用 std::vectors 而不是 vanila 数组。或者使用 std::array .

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