[英]How to assign a pointer to base class to an object of a derived class in c++?
[英]Trying to assign a new derived object to a base class pointer but it seems to act like nothing happened
预先感谢您的答复。
store()是Backpack类的一个函数,该类保存着一个指针数组(Item *项目)。 发送到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();
}
谢谢。
编辑:现在研究向量。
首先,有几件事可能会减轻您的生活(以及那些将阅读您的代码的人的生活)。 它将简化您的代码。 因此,它将更易于理解和调试:
例:
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()
?)
特别是,您不需要在Weapon
重新定义name
, weight
和power
(及其吸气剂),因为它已经在Item
定义了
这意味着您可以删除行Container(){;}
std::vector
而不是尝试自己处理指针和数组。 我敢肯定,这最后的建议本身可以解决您的问题。 特别是,如果使用vector<Item>
,则不再需要自己处理指针。 这意味着不再有new
,也没有delete
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.