#pragma once #include "Core/Item/Item.h" template class InventorySystem { public: InventorySystem() : Data(nullptr), Capacity(10), Size(0) { Data = new T[Capacity]; } ~InventorySystem() { delete[] Data; Data = nullptr; } void Resize() { T* TempData = new T[Capacity * 2]; for (int i = 0; i < Size;) TempData[i] = std::move(Data[i]); delete[] Data; Data = TempData; Capacity *= 2; } void AddItem(const T& New) { std::cout << "아이템 추가 시도..." << "(현재 " << Size << "/" << Capacity << ")\n"; system("pause"); if (Size >= Capacity) { Resize(); std::cout << "-> 인벤토리 자동 확장!\n"; } Data[Size++] = New; std::cout << "-> 아이템 추가 완료" << "(현재 " << Size << "/" << Capacity << ")\n"; system("pause"); PrintAllItems(); } void RemoveLastItem() { if (Size <= 0) Size = 0; else Data[Size--] = nullptr; } void PrintAllItems() { std::sort(Data, Data + Size, T::ComparePriceDesc); for (int i = 0; i < Size; ++i) { std::cout << i + 1 << ". " << Data[i].GetItemName() << " (" << Data[i].GetItemPrice() << "G) " << "\n"; } system("pause"); } int GetSize() { return Size; } int GetCapacity() { return Capacity; } private: T* Data; int Capacity; int Size; };