c++ - 如何通过先前存储的 ID 从结构对象中检索值? C++

标签 c++ struct

我有一个带有结构对象 'Particle' 的 C++ 脚本,其中存储了 x、y、z 位置。我创建了几个具有唯一 ID 的粒子对象。如何通过 ID 获取粒子的位置?类似于:particle.getPosByID(int ID);

我的代码如下:

struct Particle {
Vector position     { 0.0f, 0.0f, 0.0f };
Vector velocity     { 0.0f, 0.0f, 0.0f };
Vector acceleration { 0.0f, 0.0f, 0.0f};
Vector color        { 1.0f, 0.0f, 0.0f }; // RED
int ID = 0;}

我在结构中尝试过:

    float getPosX(int ID)
{
    return this->position.x;
}

使用:float ix = particles->getPosX(5);

但运气不好。有任何想法吗?我需要一个有 getter 的类(class)吗?如果是这样,我该怎么做?到目前为止,Struct 一直很好用并且易于使用...

谢谢!

已编辑

vector 是一个结构:

struct Vector
{
float x, y, z;}

粒子使用数组存储:

const int MaxParticles = 5;
Particle particles[MaxParticles];

最佳答案

Particles are stored using an array

如果粒子 ID 对应于数组索引,则通过 id 访问该数组:

float ix = particles[id].position.x;

如果没有,您可能最好将它们存储在一些关联结构中,例如 map:

std::map<int, Particle> particles;

然后您可以从结构中删除 id,并使用与上面相同的代码。

关于c++ - 如何通过先前存储的 ID 从结构对象中检索值? C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53816629/

相关文章:

c# - 将带有 char* 的结构编码到 C#

C:交换链表的两个节点

c - 指向 union 中允许的类似布局的功能的指针?

c++ - 如果我在管理 C++ 对象内存的 Objective C 中混合 C++ 代码,ARC 会处理它吗?

c++ - 在不同线程中取消引用指向原子对象的只读非原子指针是否安全?

c++ - C++ opencv copyTo() 函数的执行中断

c++ - 未收到 C++ 代码的预期输出

c++ - 来自 C++ gSOAP 或 C++/CLI 的 WCF 通信?

c malloc 指向结构数组的指针

C 结构总线错误 10