0

vtk を使用するために C++ を使用しています。頂点をハードコードすると、プログラムは正常に動作します。
ただし、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++)

あなたが抱えている問題に関連している可能性があります。

sizeofin C++ は、配列の長さではなく、バイト単位で提供するもののサイズを生成します。vtkIdType幅が 1 バイトでない限り、エラーが発生します。これを正しく行うための「昔ながらの 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 に答える