我应该在这里使用指针吗?

时间:2021-02-22 10:23:51

标签: c++ pointers

让我们创建三个类:

Vector3d 类:

class Vector3d{
    int a,b,c;
}

Class Face,每个Face包含3个向量:

class Face{
    Vector3d *a, *b, *c;
}

和类网格(3d 对象):在类网格中,我只能获取面的向量,但是 Vector3d 类的大多数对象将在许多面之间共享,所以我想将 Vector3d 存储在 Mesh 类中,并仅将指针存储在人脸对象;

class Mesh{
    std::vector<Vector3d> points;
    std::vector<Face> faces;
}

问题是,我不明白什么时候应该删除 Face 类中的指针,我应该使用其他东西而不是这个吗?

编辑: 3 int 只是为了解释我的概念,在最终版本中 Vector3d 类中会有更多数据

1 个答案:

答案 0 :(得分:6)

Face 应该存储索引,而不是指针。
IE。 Face 应该有三个成员:
unsigned a,b,c;

如果您添加/删除/调整 Vector3d 向量,索引是安全的。
它还允许您以更方便的方式在人脸之间共享点。

这也意味着您可以将 faces 向量的内容直接复制到 Graphics API 缓冲区(假设类型匹配)。