从对象列表中读取对象

时间:2018-10-12 09:07:40

标签: c++ list object memory-management segmentation-fault

我在创建对象后将它们保存在列表中,但是当我尝试从该列表中读取对象时出现分段错误。当我打印指针时,它向我显示的地址与创建时的地址相同,所以我不知道为什么会出现段错误。

也许您知道我的错误是什么。 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);
    }
  }
}

0 个答案:

没有答案