簡體   English   中英

在指針向量 c++ 中存儲新的 object

[英]Storing new object in pointer vector c++

使用以下代碼,我需要將新的 object 存儲在指針向量中。 我已經完成了,但現在它不會在循環中顯示有關 object 的任何信息(其中我是 go 槽向量)。 在 class Tvrtka(公司)中,我有 Zaposlenik(工人)的指針向量。 對於每個 object 我將其存儲到向量中。

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傳遞,則循環將無限循環 go 並且它將用完 memory。

它應該是

for(int i=0;i<_z.size();i++)
{
    zaposlenici.push_back(_z[i]);
}

或者干脆

for(auto& elem : _z)
{
    zaposlenici.push_back(elem);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM