提前感谢您的回复。
store()是Backpack类的一个函数,它持有一个指针数组(Item * items)。发送到store()的参数是正确的(通过cout打印出来进行测试)。 displayInventory()仍然在函数末尾打印前一个Item对象的成员。
void store(string & name, float weight, int power, int slot)
{
items[slot] = new Weapon(name, weight, power); // Weapon is a derived class of Item
this->displayInventory();
}
感谢。
编辑:现在研究载体。
答案 0 :(得分:1)
首先,这里有一些可能会缓解你生活的事情(以及那些会阅读你代码的人的生活)。它会简化您的代码。因此,它将更容易理解和调试:
示例:
void store(string & name, float weight, int power, int slot)
{
items[slot] = new Weapon(name, weight, power);
numItems+=1;
this->getInventory();
}
在这里,很难理解getInventory()
的目的是什么,因为它以get
开头,但其返回类型为void
。 (也许你的意思是buildInventory()
?)
特别是您不需要在name
中重新定义weight
,power
和Weapon
(及其获取者),因为它已在{{1}中定义}
这意味着您可以删除第Item
行
Container(){;}
而不是试图处理自己的指针和数组。我很确定这最后的建议本身可以解决你的问题。特别是,如果使用std::vector
,则不需要自己操纵指针。这意味着不再需要vector<Item>
,也不再需要new
。