Ошибка в try catch при преобразовании VC6 в VS2008 - PullRequest
3 голосов
/ 06 октября 2010

Когда я открыл проект VC6 в VS2008 и попытался его построить, изначально я получил ошибку:

фатальная ошибка C1083: Невозможно открыть включаемый файл: 'iostream.h': такого файла нет иликаталог

ошибка C2259: «CException»: невозможно создать экземпляр абстрактного класса

ошибка BK1506: не удается открыть файл ». \ Debug \ SClientDlg.sbr ': нет такого файла или каталога BSCMAKE SClient

Теперь я изменил #include"iostream.h" на #include"iostream" и теперь получаю 7 ошибок (как я использовал попробуй и поймай 7 мест), говоря:

ошибка C2259: 'CException':не может создать экземпляр абстрактного класса

Ниже приведен фрагмент этого кода:

void SClientDlg::ProcessDomainName(int *m_pDlg,char* strDomainName,int iLen)
{
    try
    {
    //Do Something

    }
    catch(CException ex)
    {
        printf("Exception: %d",GetLastError()); 
    }


}

1 Ответ

4 голосов
/ 06 октября 2010

Скорее всего, вам нужно сделать следующее:

catch(CException& ex) // const& might be better

Поскольку CException является абстрактным, вы не можете создать его экземпляр, но можете ссылаться на неабстрактный объект, который происходит от него.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...