gpt4 book ai didi

c++ - 如何检查数组中的索引是否为空

转载 作者:行者123 更新时间:2023-11-28 04:44:29 26 4
gpt4 key购买 nike

我正在为我在 Uni 中介绍 C++ 类(class)制作一个小的 OpenGL 程序。我有一个完整的程序,但我想对其进行一些更改以使其更加独特。我有一个立方体类:

class Cube {
public:
Cube(Mesh* mesh, Texture2D* texture, float x, float y, float z);
~Cube();
void Draw();
void Update(float rSpeed);
Vector3 position;
private:
GLfloat rotationSpeed;
Vector3 rotationVector;
Mesh* _mesh;
Texture2D* _texture;
};

然后我创建一个 Cube 类型的数组:

Cube* cubes[CUBE_AMOUNT];

然后我用数据填充这个数组的每个索引,以便稍后在程序的屏幕上绘制立方体:

for (int i = 0; i < CUBE_AMOUNT; i++) {
float x = ((rand() % 400) / 10.0f) - 20.0f;
float y = ((rand() % 200) / 10.0f) - 10.0f;
float z = -(rand() % 1000);
if (i % 2 == 1) {
cubes[i] = new Cube(cubeMesh, textureStars, x, y, z);
}
else {
cubes[i] = new Cube(cubeMesh, texturePenguins, x, y, z);
}
}

有了这个我想添加到程序中的新东西,我想检查 cubes[] 的索引是否已经被数据填充了。但是我在运行时不断收到异常。我试图检查 cubes[i] 是否等于 nullptr,并尝试检查它是否也为 NULL,但两者似乎都不匹配。

对于我使用的术语中的任何错误,我们深表歉意。初学C++,之前只学过Python,很迷茫!

解决方法:

当我创建数组时,我将其更改为 Cube* cubes[CUBE_AMOUNT] = { NULL },现在检查数组时,cubes[i] == NULL!

最佳答案

如果cubes不是全局变量,你可以使用:

Cube* cubes[CUBE_AMOUNT] = {};

将所有元素初始化为nullptr

您还可以使用:

std::vector<std::unique_ptr<Cube>> cubes(CUBE_AMOUNT);

消除必须在代码中释放动态内存的负担。

无论哪种情况,都可以使用:

if ( cubes[index] )
{
// Got a valid pointer. Use it.
}

关于c++ - 如何检查数组中的索引是否为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49548736/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com