2016-11-05 9 views
0

新しいQGraphicsLineItemをQGraphicsPixmapItemのQListに追加すると、自分のC++プログラムがクラッシュする。 以下はその機能です。新しいQGraphicsItemをシーンに追加するとC++プログラムがクラッシュする

void MainWindow::linkComputerNodes(QList<Node*> routers) 
{ 

    for(int i=0;i<routers.length();i++) 
    { 
     scene->addItem(new Link(routers.at(i),routers.at(i+1))); 
    } 
} 
+0

あなたは '0'から' routers.length() 'に反復していると同時に、インデックス' i + 1'にある要素にアクセスしようとしています。これは最後に範囲外です繰り返し。 –

答えて

0

あなたのforループ:

for(int i=0;i<routers.length();i++) 

は、リスト内のすべての単一のルータを通過するが、その後、あなたは直接の後、各ルータからルータへのリンクを追加します。つまり、最後のルータでは、存在しないルータへのリンクを追加しようとしています。ループを次のように変更してみてください。

for(int i=0;i<routers.length() - 1;i++) 

既存のルータ間にのみリンクを追加するようにしてください。

0

router.at(i + 1)で1をオフにすることはできますか?アクセスルータにしようとしてすなわち[routers.length]

関連する問題