2016-04-13 28 views
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
+0

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

+0

@WhozCraig: Üzgünüm, yazımı düzenlerken hata yaptım, düzenliyorum! – LightMan

+1

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

cevap