Я использую 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();
}
Других решений пока нет …