Вы не опубликовали ту часть кода, в которой возникла проблема, потому что все это выглядит довольно нормально. Тем не менее, у него много проблем с правильностью:
Base(char* baseName, char* cityName);
Строки должны передаваться как const char*
, если они не изменяются.
virtual ~Base();
Не знаю, должно ли это быть virtual
; не могу видеть, каковы его подклассы.
list<Vehicle*>::const_iterator GetEndList();
Должен быть методом const, так как это const_iterator
: list<Vehicle*>::const_iterator GetEndList() const;
char* GetBaseName() const;
char* GetLocation() const;
Они должны возвращать const char*
, поскольку ваш код не настроен для обработки изменяемого имени и местоположения.
list<Vehicle*>::const_iterator FindVehicle(char* id);
Опять же, должен быть метод const: list<Vehicle*>::const_iterator FindVehicle(char* id) const;
Base::~Base()
{
delete [] m_name;
delete [] m_location;
//m_baseVehicles.clear();
}
Вам не нужно m_baseVehicles.clear();
, потому что это происходит в любом случае сразу после деструктора. Тем не менее, вам нужно удалить автомобили, если на них нет ссылок, иначе вы получите утечку.
армейский дистрактор:
"деструктор". А где остальные Army
?
Army::~Army()
{
list<Base*>::iterator baseIter = m_basesList.begin();
for (baseIter ; baseIter != m_basesList.end() ; ++baseIter)
delete (*baseIter);
m_basesList.clear();
}
Опять же, вам не нужно m_basesList.clear();
.