class Item
{
string sItemName;
int iQt, iPrice;
public:
Item(string, int, int);
int getPrice(int);
};
Item o_FindItem;
int ItemCSVImport::GetItem(char* cItemName)
{
o_FindItem = (m_ItemsMap.find(cItemName)->second);
return 1;
}
Приведенный выше код работает нормально в первый раз. Но когда я пытаюсь вызвать тот же метод во второй раз, первая строка внутри метода дает ошибку сегментации. Может ли кто-нибудь предложить решение?
Вероятно, проблема в том, что имя cItemName
не найдено. Чтобы исправить это, попробуйте что-то вроде этого:
int ItemCSVImport::GetItem(char* cItemName)
{
auto it = m_ItemsMap.find(cItemName);
if (it != m_ItemsMap.end()) {
o_FindItem = it->second;
return 1;
} else {
return 0;
}
}
cItemName == NULL
. Если это так, вы должны вернуться рано, до вызова find()
, вероятно.
o_FindItem
? Что такоеm_ItemsMap
? Делаете ли вы что-нибудь между двумяGetItem()
? Вы используете тот жеcItemName
?