0

私はここで完全に夢中になります。私は Visual Studio 2008 を使用していますが、バグがあると思わずにはいられません。そうでなければ、重大な基本事項をいくつか忘れてしまったのです。

for ループの「初期化」(最初のフィールド) を削除すると、「ポスト インクリメント」(3 番目のフィールド) がループ本体の前に実行されるようです。

std::list<VideoTranscoderStats>::iterator videoStatsIter = mTranscoderStatisticsList.begin();
for(;videoStatsIter != mTranscoderStatisticsList.end();videoStatsIter++)
{
    // do stuff
}

デバッグすると、「do stuff」の前、および for ループで条件をテストする前に「videoStatsIter++」を実行していることがわかります。

一方、videoStatsIter の初期化を for ループ ステートメントの先頭に移動すると、すべて正常に動作します。forループの本体に続いて「videoStatsIter++」が実行されます。

4

0 に答える 0