0

我正在使用 C++ 来使用 vtk,当我对顶点进行硬编码时,我的程序运行良好。
但是,当我尝试实现一个 for 循环(保存 x 多个顶点)时,整个程序崩溃了。
这是我正在使用的代码:

vtkIdType totalVertex[9];

for(int i = 0; i < sizeof(totalVertex); i++){
    totalVertex[i] = g->AddVertex();
}
// Hardcode example for syntax:
// vtkIdType v1 = g->AddVertex();

这将获得 9 个顶点,然后我可以使用诸如

g->AddEdge (totalVertex[0], totalVertex[1]);

但是我的代码永远不会到达添加边的地方,而是决定中断循环。

我是 C++ 新手,所以任何想法都会很好。

4

1 回答 1

2

这可能无法解决您的问题,但存在问题

for(int i = 0; i < sizeof(totalVertex); i++)

它可能与您遇到的问题有关。

sizeof在 C++ 中,以字节为单位生成您提供的任何内容的大小,而不是数组的长度。除非vtkIdType是一个字节宽,否则您将遇到错误。正确执行此操作的“老式 C 方式”是

for(int i = 0; i < sizeof(totalVertex) / sizeof(totalVertex[0]); i++)

一种更清洁、更现代的 C++ 方式是

#include <array>

std::array<vtkIdType, 9> totalVertex;

for(int i = 0; i < totalVertex.size(); i++){
    totalVertex[i] = g->AddVertex();
}
于 2013-06-14T16:45:07.793 回答