我有一个自定义Vector typedef的指针数组(仅3个浮点数)。我正在编写Wavefront对象加载器,并且希望能够在遇到文件中的顶点行时将其添加到这些向量的数组中。目前,我的问题是为新向量分配内存。

向量

typedef struct
{
    float x;
    float y;
    float z;
}
Vector;


解析行并保存在内存中

Vector *verticies;

Vector tmp;
verticies = new Vector;

long endPtr = sizeof(verticies);

sscanf(line, "v %f %f %f", &verticies[endPtr].x, &verticies[endPtr].y, &verticies[endPtr].z);

return;


.obj文件中有八个顶点,并且sizeof(verticies)的输出始终显示8。上面代码的问题是,新的顶点被赋予了*verticies中的最后一个元素,所以我的问题是: **如何动态地将元素添加到指针数组的末尾?**

最佳答案

您正为一个Vector结构分配空间。

sizeof(vertices)将是计算机上指针的大小,在这里绝对没有意义。

sscanf(line, "v %f %f %f", &(verticies->x), &(verticies->y), &(verticies->z));


将做您需要的。但这仅使您可以读取单个Vector
您要么需要分配足够的空间(与行一样多的向量),然后使用for循环将行与数组中的偏移量匹配。

但是您确实应该使用std::vectorstd::ofstream

09-06 20:40