Snuux, А зачем её покупать? Купи электронную книжку и загрузи, дешевле будет. Тем более у этой книги очень ограниченный тираж. FinderX - Android Аркада
Здравствуйте. У меня возник вопрос при реализации инвентаря. Есть несколько классов предметов Weapon, Potion, Clothe. Все они наследуются от Item. Класс инвентаря содержит vector<Item*> vi; функции добавление, очистки определённой ячейки. В мэйне определены объекты всех классов.
void Inventory::AddToInventory(Item i, int _number, int _index) { i.Add(_number); i.SetIndex(_index); if(ItemCount < sizeOfInventory) { Item* pi = new Тип подкласса; vi[_index] = π ItemCount++; } else cout<<"Inventory is full\n"; }
но как потом очищать память. Как это можно сделать? Может я вообще неправильно подошёл к этому вопросу. На всякий случай выложу исходники, если заметите ещё что-то неправильное, говорите.
Сообщение отредактировал goldsphere - Четверг, 01 Августа 2013, 18:00
Так деструктору неизвестен pi. ------------------------------------- Появился у меня вариант идентифицировать предметы по ID, и вместо vector<Item*> vi; хранить просто динамический массив int *ArrayID. Но тогда Класс инвентаря должен иметь доступ к объектам классов предметов. FinderX - Android Аркада
Сообщение отредактировал goldsphere - Четверг, 01 Августа 2013, 18:36
TideS, ну, для более плавного передвижения. в int допустим передвижение самое медленное 1(не считая ноль). А во float или double можно дробные значения.
Добавлено (10.08.2013, 15:10) --------------------------------------------- Archido, я уже решил проблему. Я сделал не вектор, а динамический массив. Потом просто перегрузил функцию AddToInventory, для каждого предмета и делал в ней ItemArray[_index] = new тип предмета. И в деструкторе инвентаря удалял занятые ячейки. FinderX - Android Аркада
Сообщение отредактировал goldsphere - Суббота, 10 Августа 2013, 15:10