I’m saving this in case I need to refer back to it later. This is an example of removing an item from an array of pointers to objects in C++.
#include <iostream>
class Item {public: int value; Item(int v) : value(v) {}};
void removeItem(Item *items[], int& size, int index) { if (index < 0 || index >= size) { std::cout << "Invalid index\n"; return; }
// Free the memory of the item at the index delete items[index];
// Shift elements to the left to fill the gap for (int i = index; i < size - 1; ++i) { items[i] = items[i + 1]; }
// Set the last pointer to nullptr (optional) items[size - 1] = nullptr;
// Decrease the logical size of the array --size;}
int main() { const int capacity = 20; int size = 5; // Current number of items in the array Item *items[capacity] = {nullptr};
// Populate the array for (int i = 0; i < size; ++i) { items[i] = new Item(i * 10); // Dynamically allocate Items }
// Display before removal std::cout << "Before removal:\n"; for (int i = 0; i < size; ++i) { std::cout << "Item " << i << ": " << items[i]->value << "\n"; }
// Remove item at index 2 removeItem(items, size, 2);
// Display after removal std::cout << "\nAfter removal:\n"; for (int i = 0; i < size; ++i) { std::cout << "Item " << i << ": " << items[i]->value << "\n"; }
// Clean up remaining memory for (int i = 0; i < size; ++i) { delete items[i]; }
return 0;}