我在创建对象后将它们保存在列表中,但是当我尝试从该列表中读取对象时出现分段错误。当我打印指针时,它向我显示的地址与创建时的地址相同,所以我不知道为什么会出现段错误。
也许您知道我的错误是什么。 Ty:
主要:
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);
}
}
}