C++ 使用 & 从数组中的对象创建指针成员 [错误]
c++ use & to create pointer member from objects in array [error]
你好,很抱歉这应该不是一个难题。我试图获取指针以调用数组中的对象函数。块 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
.
您还应该熟悉迭代器的概念。
相关文章:
- 使用基类指针创建对象时,缺少派生类析构函数
- 如何在没有数据拷贝的情况下从指针创建一个Eigen VectorXd对象
- 如何从绝对地址的 C 样式指针创建对C++对象的引用
- 不明白使用双指针 (**) 创建 2d 动态数组
- 如何使用指向动态数组的静态指针创建类?
- Opencl:从 c 样式指针创建 UserEvent
- 从 uint16 指针创建垫子
- 如何为指针创建类型定义
- 从原始指针创建const_iterator会在 macOS 上产生编译错误
- 为什么可以使用指针创建新结构,但不能以相同的方式创建双精度?
- 是否可以在 c++17 中为 c 样式指针或原始指针创建弱指针
- 调用虚拟函数而不通过类类型指针创建任何对象
- 如何使用双指针创建指针数组?
- 使用指针创建类成员
- 如何使用成员函数指针创建模板类
- 从现有指针C 创建一个新对象
- 使用指针创建动态数组的问题
- 如何为指向数组的指针创建内存集?
- 使用共享指针创建的链表数组
- 使用C++ 11 中的模板类型的成员函数指针创建方法参数