#include #include // implement everything here int main() { std::vector items { new Weapon { Attack{5.0} }, new Armor { Defend{10.0} }, new Shield { Defend{2.0}, Attack{2.5}, Defense_Multiplier{2.5} }, new Sword { Named{"Excalibur"}, Attack{5.0}, Damage_Multiplier{5.0} } }; assert(items[0]->damage() == 5.0); assert(items[1]->defense() == 10.0); assert(items[2]->damage() == 2.5); assert(items[2]->defense() == 5.0); assert(static_cast(items[3])->name == "Excalibur"); assert(items[3]->damage() == 25.0); }