2012-06-11 4 views
-1

У меня есть функция со следующим определением:если еще производит C2181 ошибки: незаконное еще без если

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

Все пути кода в этой функции возвращал 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++, о котором я не знаю? Это не имеет никакого смысла для меня. Ошибка, несомненно, относится к другому. Я построил, чтобы убедиться, что это не просто intellisense. Это проект Win32 C++.

ответ

9

Вы должны потерять эту точку с запятой:

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

с запятой detatches в if условный из следующего блока, который затем интерпретируется как сферы, а затем сирота else.

+0

Ого, это очевидно ... У меня были другие проблемы с этим вызовом функции, поэтому я не думал, когда я получу ошибку (присваивание с возвращаемым значением было неудачным). Спасибо, и я соглашусь, когда смогу. – evanmcdonnal

+0

@evanmcdonnal Почему вы не можете принять его _now_? :) –

+0

@EitanT Вы должны подождать определенное количество времени, десять минут, я думаю. – evanmcdonnal

2

if (process.Process (daLFDFileHandler, daGather)); удалить; поскольку он заканчивается, если только

1

В строке нет необходимости использовать пол двоеточия: if (process.Process (daLFDFileHandler, daGather));

Вам необходимо удалить его, чтобы получить желаемый результат.