Listemin size() işlevini kullanma girişiminde kodumun kesildiği bir sorunla karşılaştım. Stackoverflow :-) tavsiyesi üzerine segfault'un oluştuğu minimum bir durum oluşturdum (aşağıdaki call inventory.size() üzerinde). Öyle:Kurucudaki dizi ayarı daha sonra başarısızlık demektir
#include <list>
class Thing {};
class Player {
private:
int xpCalcArray[99];
std::list<Thing*> inventory;
public:
Player();
int addToInv(Thing& t); // return 1 on success, 0 on failure
};
Player::Player() {
// set up XP calculation array
for (int i=1; i<100; i++) {
if (i<=10) {
xpCalcArray[i] = i*100;
}
if (i>10 && i<=50) {
xpCalcArray[i] = i*1000;
}
if (i>50 && i<=99) {
xpCalcArray[i] = i*5000;
}
}
}
int Player::addToInv(Thing& t) {
if (inventory.size() == 52) {
return 0;
} else {
inventory.push_back(&t);
}
return 1;
}
int main(int argc, char *argv[]) {
Thing t;
Player pc;
pc.addToInv(t);
return 1;
}
Ben Oyuncu cosntructor dizinin kurulmasını kaldırdığınızda, bu çalışıyor fark, bu nedenle bu sorunun görünüyor. Neyi yanlış yapıyorum?
+1: TestCase! Mükemmel! –