Почему теряем данные типа string в с++? Класс: #include "Person.h"
#include
#include
using namespace std;
class Adult :
public Person
{
public:
Adult();
~Adult();
std::string GetDescription();
static void RandAdult(Adult * adult);
Person* MarriedOn = nullptr;
int GetAge();
void SetAge(int age);
string WorkPlace = (string)"";
};std::string Adult::GetDescription()
{
string tmpS = Surname + " " + Name + ", " + IntToStr(Age) + " years old," + SexToStr(sex);
if (MarriedOn == nullptr)
{
tmpS = tmpS + ", single";
}
else
{
tmpS = tmpS + ", married on "+MarriedOn->Name+" "+MarriedOn->Surname;
}
if (WorkPlace.length()>0)
{
tmpS = tmpS + ", " +WorkPlace;
}
else
{
tmpS = tmpS + ", unworked";
}
return tmpS;
}
Возникает ошибка при работе с полем WorkPlace.
Ошибка при работе программы :Возникло необработанное исключение по адресу 0x752AA6F2 в LAB6_5152.exe: исключение Microsoft C++: std::bad_alloc по адресу памяти 0x0019E050.
Строка с ошибкой :tmpS = tmpS + ", " +WorkPlace;

21 Авг 2019 в 07:03
198 +1
0
Ответы
1

Ошибка возникает из-за того, что вы пытаетесь использовать поле WorkPlace типа string в классе Adult, но подключили только библиотеку , а не . В результате происходит конфликт между стандартным типом std::string и типом строки из библиотеки string.h, что может привести к ошибке bad_alloc из-за неверного выделения памяти.

Чтобы исправить эту проблему, вам нужно либо использовать только стандартный тип std::string, удалив #include , либо использовать char* вместо string для поля WorkPlace. В этом случае вам придется управлять выделением и освобождением памяти вручную.

20 Апр в 13:09
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 84 706 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир