Как создать структуру, в которой каждый элемент вектора содержит объект класса?

Как я могу создать вектор товаров в структуре заказа для своего консольного приложения?
  • 6 мая 2024 г. 9:50
Ответы на вопрос 2
Для создания структуры, в которой каждый элемент вектора содержит объект класса, вы можете определить структуру, содержащую вектор указателей на объекты класса. Например:

```cpp
#include <vector>
#include <iostream>

class Product {
public:
    std::string name;
    double price;

    Product(std::string n, double p) : name(n), price(p) {}
};

struct Order {
    std::vector<Product*> products;
};

int main() {
    Product* p1 = new Product("Product 1", 10.50);
    Product* p2 = new Product("Product 2", 20.75);

    Order order;
    order.products.push_back(p1);
    order.products.push_back(p2);

    // Выводим названия и цены товаров из заказа
    for(Product* p : order.products) {
        std::cout << "Product: " << p->name << ", Price: " << p->price << std::endl;
    }

    // Очищаем память
    delete p1;
    delete p2;

    return 0;
}
```

В данном примере структура Order содержит вектор указателей на объекты класса Product. При создании нового продукта он добавляется в вектор продуктов заказа. В конце программы освобождается память для каждого объекта Product.

Таким образом, структура заказа содержит вектор товаров, которые могут быть созданы и добавлены к заказу во время выполнения программы.
В векторе Orderа надо хранить ссылки на Item (или указатели). 
Т.к. дочерние классы Item имеют размер >= sizeof(Item), а в векторе каждый элемент имеет фиксированный размер (сейчас sizeof(Item)), то по сути дочерние классы при попадании в Order обрезаются до состояния Item, а это не то что нужно.
Похожие вопросы