web-dev-qa-db-ja.com

エラー:「if」の前に非修飾IDが必要です

顔が青くなるまでこのエラーをグーグルで検索しましたが、結果をコードに関連付けることができませんでした。このエラーは通常、発生しているように見えますが、中括弧、親などの配置が間違っているか欠落しています。

また、C++を作成してから長い時間が経過しているため、私が見逃している明らかで愚かなことがいくつかある可能性があります。

これは私がQt Creator 2.4.0, Based on Qt 4.7.4 (64 bit) Built on Dec 20 2011 at 11:14:33で書いているQtモバイルアプリです。

#include <QFile>
#include <QString>
#include <QTextStream>
#include <QIODevice>
#include <QStringList>

QFile file("words.txt");
QStringList words;

if( file.open( QIODevice::ReadOnly ) )
{
    QTextStream t( &file );

    while( !t.eof() ) {
        words << t.readline();
    }

    file.close();
}

何が足りないのですか?前もって感謝します。

10
mwcz

そのような独立したコードを持つことはできません。すべてのコードは関数に入る必要があります。

これらすべてをmain関数でラップし、QTextStreamの使用を修正したら、問題がないはずです(eofメソッドはなく、 readlineメソッドのいずれか-使用例に付属している APIドキュメント をご覧ください)。

#include <QFile>
#include <QString>
#include <QTextStream>
#include <QIODevice>
#include <QStringList>

int main()
{
  QFile file("words.txt");
  QStringList words;

  if( file.open( QIODevice::ReadOnly ) )
  {
    QTextStream t( &file );

    QString line = t.readLine();
    while (!line.isNull()) {
        words << line;
        line = t.readLine();
    }

    file.close();
  }
}
19
Mat