Необходимо реализовать добавление, удаление и вывод элементов вектора в классе Catalog, а также чтобы при изменениях элементов, выводились новые данные. Не понимаю как это сделать(
#include <iostream>
#include <vector>
#include <string>
using namespace std;
class Catalog
{
private:
vector<Item> catalog;
public:
void addItem(const Item& item) {
catalog.push_back(item);
}
void removeItem(string title) {
for (auto it = catalog.begin(); it != catalog.end(); ++it) {
if (it->title == title) {
catalog.erase(it);
return;
}
}
}
void printCatalog() {
for (auto& item : catalog) {
item.printInfo();
}
}
};
struct User
{
string name;
string address;
string number;
string mail;
User(string p_name, string p_address, string p_number, string p_mail) : name(p_name), address(p_address), number(p_number), mail(p_mail) {}
void printInfo() {
cout << "Имя: " << name << ", Адрес: " << address << ", Номер телефона: " << number << ", Почта: " << mail << endl;
}
};
class Item
{
public:
string title;
double price;
int number;
Item(string p_title, double p_price, int p_number) : title(p_title), price(p_price), number(p_number) {}
void printInfo() {
cout << "Название: " << title << ", Цена: " << price << ", Количество на складе: " << number << endl;
}
void updateInfo(double p_price) {
price = p_price;
}
void updateInfo(int p_number) {
number = p_number;
}
Item& operator=(const Item& other)
{
this->title = other.title;
this->price = other.price;
this->number = other.number;
return *this;
}
bool operator==(const Item& other) const
{
return (this->title == other.title && this->price == other.price && this->number == other.number);
}
};
class Clothes : public Item {
public:
string size;
string color;
Clothes(string p_title, double p_price, int p_number, string p_size, string p_color) : Item(p_title, p_price, p_number), size(p_size), color(p_color) {}
void changeSize(string p_size) {
size = p_size;
}
void changeColor(string p_color) {
color = p_color;
}
void printInfo() {
cout << "Название: " << title << ", Цена: " << price << ", Количество на складе: " << number << ", Размер: " << size << ", Цвет: " << color << endl;
}
};
class Shoes : public Item {
public:
string size;
string type;
Shoes(string p_title, double p_price, int p_number, string p_size, string p_type) : Item(p_title, p_price, p_number), size(p_size), type(p_type) {}
void changeSize(string p_size) {
size = p_size;
}
void changeType(string p_type) {
type = p_type;
}
void printInfo() {
cout << "Название: " << title << ", Цена: " << price << ", Количество на складе: " << number << ", Размер: " << size << ", Тип: " << type << endl;
}
};
int main()
{
setlocale(LC_ALL, "Russian");
Catalog catalog;
User user1("Лиза", "ул. Анны Ахматовой д.22", "79773079796", "paputsya@mail.ru");
Item item1("Сумка", 40.0, 10);
Item item2("Ремень", 20.0, 15);
Item item3 = item2;
Clothes clothes1("Футболка", 15.0, 19, "M", "Синяя");
Clothes clothes2("Лонгслив", 25.0, 10, "S", "Белый");
Shoes shoes1("Кроссовки Nike", 50.0, 15, "38", "Кроссовки");
Shoes shoes2("Кеды Converse", 43.0, 13, "36", "Кеды");
catalog.addItem(item1);
catalog.addItem(item2);
catalog.addItem(item3);
catalog.addItem(clothes1);
catalog.addItem(clothes2);
catalog.addItem(shoes1);
catalog.addItem(shoes2);
user1.printInfo();
catalog.printCatalog();
clothes1.changeColor("black");
clothes1.updateInfo(55);
catalog.printCatalog();
int n = 1;
cout << "1. Посмотпеть данные пользователя" << endl;
cout << "2. Посмотреть каталог" << endl;
cout << "3. Изменить цену товара или его кол-во на скаладе" << endl;
cout << "4. Изменить данные о товаре" << endl;
cout << "5. Добавить товар" << endl;
cout << "6. Удалить товар" << endl;
cout << "0. Выход" << endl;
cout << endl;
cout << "Выберите действие: ";
cin >> n;
try
{
if (n < 0 || n > 6)
{
throw "Такого действия не существует.";
}
}
catch (const char* message)
{
cerr << "Ошибка: " << message << endl;
cout << "Выберите действие (число от 0 до 4): ";
cin >> n;
}
while (n != 0)
{
if (n == 1)
{
}
if (n == 2)
{
}
if (n == 3)
{
}
if (n == 4)
{
}
if (n == 5)
{
}
if (n == 6)
{
}
if (n == 0) break;
}
return 0;
}