如何解决在指针向量C ++中存储新对象
使用以下代码,我需要将新对象存储在指针向量中。我已经做完了,但是现在它不会显示关于对象在循环中的任何信息(在这里我通过槽矢量)。在类Tvrtka(公司)中,我有Zaposlenik(工人)的指针向量。对于我存储的每个对象,它都会转到矢量。
class Tvrtka{
public:
string oib;
string naziv;
string adresa;
vector<const Zaposlenik*> zaposlenici;
Tvrtka(){}
Tvrtka(const string _oib,const string _naziv,const string _adresa,vector<const Zaposlenik*> _z)
{
this->oib=_oib;
this->naziv=_naziv;
this->adresa=_adresa;
for(int i=0;_z.size();i++)
{
zaposlenici.push_back(_z[i]);
}
}
主要部分:
vector<const Zaposlenik*>zaposlenici;
Zaposlenik *z1=new Zaposlenik("Marko","maric",20);
zaposlenici.push_back(z1);
Tvrtka t1("198","Majur","2222",zaposlenici);
for(int i=0;i<zaposlenici.size();i++)
{
cout<<zaposlenici[i]->ime;
}
如果我评论t1(Tvrtka的对象),它将向我显示有关工作人员的信息。
解决方法
在此循环中
for(int i=0;_z.size();i++)
{
zaposlenici.push_back(_z[i]);
}
_z.size()
用作循环条件,这与i
不相关。
这意味着,如果您将非空矢量传递为_z
,则循环将无限进行,并且将耗尽内存。
应该是
for(int i=0;i<_z.size();i++)
{
zaposlenici.push_back(_z[i]);
}
或者简单地
for(auto& elem : _z)
{
zaposlenici.push_back(elem);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。