1

を反復処理しQStringList、文字列を出力してから、リストから削除しようとしています。うまくいく方法が見つからないようですQStringList!例えば:

for ( QStringList::Iterator it = commandList.begin(); it != commandList.end(); ++it ) {
    out << "Processed command: " << *it << endl;
    *it.erase();
}

コンパイラ エラーが発生します: 'QList::Iterator' には 'erase' という名前のメンバーがありません

  1. イテレータが現在指しているアイテムを削除するにはどうすればよいですか?
  2. ループ内で削除しても安全ですか? (++itリストの途中でアイテムを削除すると失敗する可能性があるため)
4

1 に答える 1

7

別の解決策はQMutableStringListIteratorの使用です。他のイテレータとして使用できますが、探している「削除」メソッドがあります。

 QMutableStringListIterator i(list); // pass list as argument
 while (i.hasNext()) { 
     i.remove();                      // delete current item
 }
于 2013-09-29T14:47:09.677 に答える