как решить ошибку нарушения с помощью метода
Я получаю такую странную ошибку нарушения при использовании метода 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).