как решить ошибку нарушения с помощью метода

Я получаю такую ​​странную ошибку нарушения при использовании метода getAt(). Я использую метод в следующем порядке:

          OdDbBlockTablePtr       w_kOdBlockTablePtr ;
    bool  lbCreateDefaults = false;
    OdDb::MeasurementValue  lkMeasurement = OdDb::kEnglish;
    OdDbDatabasePtr pDb;
    // Datenbank initialisieren
    pDb = g_ExSystemServices.createDatabase(lbCreateDefaults, 
    lkMeasurement);

    // TABLE - Hold Ptr
    
    w_kOdBlockTablePtr = pDb->getBlockTableId().openObject(OdDb::kForWrite);
const wchar_t AcadBlockModelSpace[] = L "*MODEL_SPACE";

wstring lsModelSpace(AcadBlockModelSpace);
w_kOdModelSpaceBlockRecPtr = GetTableRecordIdFromName(lsModelSpace, (OdDbSymbolTablePtr&)w_kOdBlockTablePtr).safeOpenObject(OdDb::kForWrite);


OdDbObjectId K_TeighaClass::GetTableRecordIdFromName(wstring& psName, OdDbSymbolTablePtr& pkTablePtr)
{
    OdDbObjectId lkId;
    try {
        OdString lsOdName = psName.c_str();
        lkId = pkTablePtr->getAt(lsOdName);
    }

    catch (OdError& err)
    {

        DoOdError(err, NULL, NULL);
    }

    return lkId;
}

Я был бы очень признателен, если бы кто-нибудь мог мне помочь. заранее спасибо

1 ответ

Это совсем не странно. Если вы наведете указатель мыши на pkTablePtr, вы почти наверняка обнаружите, что это nullptr(или отладчик может сообщить об этом как 0).

В вашем вопросе недостаточно информации, чтобы сказать, почему это может быть, но, поскольку вы уже работаете под отладчиком, вы можете просмотреть свой код и выяснить это.

try... catchкстати, не будет ловить серьезную ошибку, подобную этой. Для этого вам нужно __try... __except(поддерживается только в Windows).

Другие вопросы по тегам