0
C++ 'daki liste işlemlerinde bir sorunum var, lütfen benimle şımartın, bu dilde yeni başlayan biriyim.Yinelenen segfault'u listeleme
list<Auction> MyAucList;
Ben Somes nesneleri oluşturmak ve listeye koydum:
Yani, böyle yaratılmış bir liste var
Auction test(a, i); // a and i are int
MyAucList.push_back(test); // I put my objects in the list
Şimdi aynı işlevi, ben yineleme yapabilirsiniz Liste ve nesnelerden veri alın:
for (list<Auction>::const_iterator it1 = MyAucList.begin(); it1 != MyAucList.end(); ++it1)
{
if ((*it1).Getitem() == 118632)
cout << "FOUND !" << endl;
}
Bu, beklendiği gibi çalışır! Ben antoher işlevine listesine bir referans geçerken
AMA:
listHandling(MyAucList);
}
void listHandling(list<Auction> &MyAucList)
{
for (list<Auction>::const_iterator it1 = MyAucList.begin(); it1 != MyAucList.end(); ++it1)
{
if ((*it1).Getitem() == 118632)
cout << "FOUND : " << 118632 << endl;
}
}
I bir referans kullanmadan güvenilir :-(bir segfault almak ya da bir işaretçi, aynı sonuç ile . Eğer bu sorunla ilgili bir fikrin var mı?
Teşekkür! Yeni
foll kanıtladığı gibi yapmaya çalıştığın şeyin yanlış bir şey yoktur
Eh, bir, sizin işlevinizde 'MyAucList' yoktur; parametre 'MyList' dir. MyAucList hangi cehennemden geldi? Bir * gerçek * [MCVE] (https://stackoverflow.com/help/mcve) gönderin. – WhozCraig
@WhozCraig: Üzgünüm, yazımı düzenlerken hata yaptım, düzenliyorum! – LightMan
Harika, şimdi lütfen bu yorumun ikinci kısmına dikkat edin. Zavallı ucuz cam imitasyon kristal topum bana "Müzayede" nin [Üçün Kuralı'nı] bozduğunu (https://en.wikipedia.org/wiki/Rule_of_three_ (C% 2B% 2B_programming)) söyler, ancak [** MCVE olmadan **] (https://stackoverflow.com/help/mcve) kesin olarak bilmek imkansız. Biz okuyuculara aldırmıyoruz. Bunu bir * hata ayıklayıcısında * çalıştırmak büyük olasılıkla * tam olarak * tekerleklerin nereye düştüğünü söyler. – WhozCraig