Я называю этот код в основном()ошибка Seg из конструктора
for (COwnerList l=b1.ListOwners(10); !l.AtEnd(); l.Next())
cout << l.Surname() << ", " << l.Name() << endl;
for (CCarList l=b1.ListCars("Peter","Smith"); !l.AtEnd(); l.Next())
cout << l.RZ() << ", " << l.VIN() << endl;
for (COwnerList l=b1.ListOwners(10); !l.AtEnd(); l.Next())
cout << l.Surname() << ", " << l.Name() << endl;
Я пытался отладки и выяснил, сегментную вина происходит от конструктора COwnerList
COwnerList CRegister::ListOwners (unsigned int vin) const
{
vector<Car>::const_iterator it;
COwnerList tmp;
it = lower_bound(byVINList.begin(), byVINList.end(), Car("",vin), cmpVIN);
if(it != byVINList.end())
tmp.car = &(*it);
tmp.in = it->owners.end() - it->owners.begin();
return tmp;
}
конструктор им вызов выглядит следующим образом:
COwnerList::COwnerList(void)
{
here = car->owners.begin();
i = 0;
in = car->owners.end() - car->owners.begin();
}
интересно, оно не зависания после 1 для в основной(), так что должно быть что-то неправильно в коде между го новления 2 для циклов в основной(), но я понятия не имею, что это может быть, я все, что связано владельцы рассылок() там
не изменяя EDIT1
конструктор автомобилей:
Car::Car( const string & pid,
const unsigned int & pvin = 0,
const string & cname = "",
const string & csurname = "")
{
rz = pid;
VIN = pvin;
name = cname;
surname = csurname;
}
EDIT2
class COwnerList
{
public:
COwnerList(void);
string Name (void) const;
string Surname (void) const;
bool AtEnd (void) const;
void Next (void);
//vector<pair<string, string> > powners;
const Car *car;
int in;
private:
vector<pair<string, string> >::const_iterator here;
int i;
};
Есть слишком много пространства. –
Что находится в 'lower_bound()' и что находится в конструкторе 'Car()'? – MondKin
сбой на этой линии COwnerList tmp; во втором вызове – lllook