如果,否则产生错误C2181:如果没有if,则为非法

时间:2012-06-11 20:49:00

标签: c++ compiler-errors boolean virtual

我有一个具有以下定义的函数:

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

this函数中的所有代码路径都返回一个bool,我肯定在调用这个函数,而不是子类中的函数。以下代码在发布标题中生成错误:

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 ++的一些警告?对我来说完全是无稽之谈。这个错误无疑是指其他的。我已经建立起来确保它不仅仅是智能感知。这是一个Win32 C ++项目。

3 个答案:

答案 0 :(得分:9)

你需要丢掉这个分号:

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

分号将if条件与以下块分离,然后将其解释为范围,后跟孤立else

答案 1 :(得分:2)

if(process.Process(daLFDFileHandler,daGather)); 除掉 ;如果只有

结束

答案 2 :(得分:1)

行中有不必要的半冒号:if(process.Process(daLFDFileHandler,daGather));

您需要将其删除才能获得所需的输出。