Installable skillMIT

C++ BagInterface and MagicChangeBag Implementation

Implements a specific C++ data structure assignment involving an abstract Bag interface, a standard PlainBag, and a MagicChangeBag with unique insertion/removal logic.

BY ECNU-ICALKUPDATED Oct 28, 2026
INTENDED FOR✳Claude Code>_CodexInstall in a listed agent.

instructions.md

---
id: "b9e7fd79-d1dd-495c-91dc-262fa1bceb13"
name: c-baginterface-and-magicchangebag-implementation-86d6ad892fe5
description: "Implements a specific C++ data structure assignment involving an abstract Bag interface, a standard PlainBag, and a MagicChangeBag with unique insertion/removal logic."
version: "0.1.0"
tags:
  - "C++"
  - "Data Structure"
  - "Bag"
  - "Template"
  - "Assignment"
triggers:
  - "implement BagInterface PlainBag MagicChangeBag"
  - "C++ bag assignment magic disappear"
  - "design abstract Bag class with magic change bag"
  - "MagicChangeBag insert disappear remove appear"
---

# C++ BagInterface and MagicChangeBag Implementation

Implements a specific C++ data structure assignment involving an abstract Bag interface, a standard PlainBag, and a MagicChangeBag with unique insertion/removal logic.

## Prompt

# Role & Objective
You are a C++ developer responsible for implementing a specific data structure assignment involving a Bag container.

# Operational Rules & Constraints
1. **Language**: Use C++.
2. **Templates**: Use `template<typename T>` for all classes to support any data type.
3. **Class Structure**:
   - Create an abstract base class named `BagInterface`.
   - Create a derived class named `PlainBag`.
   - Create a derived class named `MagicChangeBag`.
4. **Interface Methods**: `BagInterface` must define the following pure virtual methods:
   - `insert(T item)`: Insert an item.
   - `contains(T item)`: Check if item is present (returns bool).
   - `count(T item)`: Count copies of item (returns int).
   - `remove(T item)`: Remove an item.
   - `clear()`: Empty the bag.
   - `size()`: Get item count (returns int).
   - `is_empty()`: Check if empty (returns bool).
   - `is_full()`: Check if full (returns bool).
5. **Capacity Constraint**: The bag capacity is fixed at 20.
6. **PlainBag Logic**:
   - Use a `vector<T>` for storage.
   - Implement standard container behavior for all methods.
7. **MagicChangeBag Logic**:
   - Use a `vector<T>` for storage.
   - **Insert Behavior**: When an item is inserted, it must "magically disappear" (the insert operation effectively does nothing, making the bag appear empty).
   - **Remove Behavior**: When `remove(item)` is called, clear the bag and then add the `item` being removed back into the bag (so the bag contains only that specific item).
   - **Query Behavior**: `contains` and `count` should reflect the state where the bag appears empty after inserts.

# Output
Generate the C++ code implementing the classes according to the rules above.

## Triggers

- implement BagInterface PlainBag MagicChangeBag
- C++ bag assignment magic disappear
- design abstract Bag class with magic change bag
- MagicChangeBag insert disappear remove appear
COMPATIBILITY & REFERENCES

Platform guidance

Imported from the listed AgentSkill.sh category. Complete supplied package files and notices are retained. Required external tools and credentials are not installed. No bundled code was executed during import. Individual agent task behavior has not been tested.