-1

次の定義を持つ関数があります。

virtual bool Process(wtdaFileHandler &daHandler, wtdaGather &daGather);

この関数のすべてのコード パスは aboolを返します。サブクラスの関数ではなく、確かにこの関数を呼び出しています。次のコードは、投稿のタイトルにエラーを生成します。

wtdaLFDProcess process;

// call some methods to do initialize process and args.

if (process.Process(daLFDFileHandler, daGather));
{
     retval = 0;
}
else
{
    retval = LFD_FILE_LOCK_ERROR;
    cout << "Could not obtain file lock for processing." << endl;
    WTDA_STATUS(3,  "Error...Stopping" );
    return;
}

誰でもこれを説明できますか?たぶん、私が気付いていないC++の警告ですか?私には意味がありません。エラーは間違いなくelseを参照しています。インテリセンスだけではないことを確認するために構築しました。これは Win32 C++ プロジェクトです。

4

3 に答える 3

9

このセミコロンを失う必要があります:

if (process.Process(daLFDFileHandler, daGather));
                                                ^

セミコロンifは、後続のブロックから条件を切り離し、スコープとして解釈され、その後に orphan が続きelseます。

于 2012-06-11T20:49:43.557 に答える
2

if (process.Process(daLFDFileHandler, daGather)); を削除します。ある場合のみ終了します。

于 2012-06-12T06:30:21.603 に答える
1

行に不要なセミコロンがあります:if (process.Process(daLFDFileHandler, daGather));

目的の出力を得るには、それを削除する必要があります。

于 2014-04-17T04:29:53.797 に答える