vtk类型的visualarray拒绝在c++中保存内容

visual Array of vtk type refuses to hold contents in C++

本文关键字:保存 c++ 类型 visualarray 拒绝 vtk      更新时间:2023-10-16

我使用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++新手,如果有什么建议就更好了。

这可能不能解决您的问题,但是

有一个问题
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();
}