Я сохраняю объекты в списке после их создания, но получаю ошибку сегментации, когда пытаюсь прочитать их из этого списка.Когда я печатаю указатели, он показывает мне тот же адрес, что и адрес при создании, поэтому я не знаю, почему я получаю ошибку Seg.Fault.
Может быть, у вас есть идея, в чем моя ошибка.Ty:
main:
int main()
{
Computer computer("My Computer",1000);
computer.addHardware("Monitor",250);
computer.removeHardware("Monitor",250);
computer.addHardware("Monitor",150);
return 0;
}
Computer.c:
#include "Computer.h"
Computer::Computer(std::string name, int budget) : name_(name), budget_(budget),momentary_cost_(0){}
Computer::~Computer(){}
void Computer::addHardware(const char* name, int cost)
{
Hardware newHardware = Hardware(name,cost);
if(momentary_cost_ + cost < budget_)
{
HardwareList.push_back(&newHardware);
momentary_cost_ += cost;
}
else
{
delete(&newHardware);
}
}
void Computer::removeHardware(const char* name, int cost)
{
for (auto it = HardwareList.begin(); it != HardwareList.end(); ++it)
{
if (std::string(name) == std::string((*it)->getName()) || cost == (*it)->getCost())
{
HardwareList.erase(it);
// HardwareList = (Hardware*)realloc(HardwareList, sizeof(HardwareList)*(HardwareList.size()-1));
delete(&it);
}
}
}