【问题标题】:Error in try catch while converting VC6 to VS2008将 VC6 转换为 VS2008 时尝试捕获错误
【发布时间】:2010-10-06 05:04:36
【问题描述】:

当我在 VS2008 中打开一个 VC6 项目并尝试构建它时,最初我得到了错误:

致命错误 C1083:无法打开包含文件:'iostream.h':没有这样的文件或目录

错误 C2259:“CException”:无法实例化抽象类

错误 BK1506 : 无法打开文件 '.\Debug\SClientDlg.sbr': 没有这样的文件或目录 BSCMAKE SClient

现在我已将 #include"iostream.h" 更改为 #include"iostream" 并且现在收到 7 个错误(因为我使用了 try and catch 7 个位置)说:

错误 C2259:“CException”:无法实例化抽象类

以下是该代码的 sn-p:

void SClientDlg::ProcessDomainName(int *m_pDlg,char* strDomainName,int iLen)
{
    try
    {
    //Do Something
    
    }
    catch(CException ex)
    {
        printf("Exception: %d",GetLastError()); 
    }
   
    
}

【问题讨论】:

    标签: c++ windows exception mfc cexception


    【解决方案1】:

    您可能需要这样做:

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

    由于CException 是抽象的,你不能实例化它,但你可以引用一个派生自它的非抽象对象。

    【讨论】:

    • 解决了错误,但很想知道为什么它在 VC6 中没有抛出任何错误
    • @Subhen:没有线索。 :) 可能具有相同的语义,但 VC6 是预标准的,我没有花太多精力去学习它。
    猜你喜欢
    • 1970-01-01
    • 2019-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-03
    • 2022-06-13
    • 2014-12-14
    • 1970-01-01
    相关资源
    最近更新 更多