У меня есть класс Product, который представляет один объект Product, каждый новый объект Product хранится внутри вектора, который является частью класса Catalog.Я хочу, чтобы пользователь мог добавлять товары, которые существуют в векторе каталога, в свою корзину покупок, а это еще один класс, в котором есть вектор для сохранения товаров, которые он хочет заказать.Я хочу, чтобы это было сделано путем копирования из вектора каталога в вектор корзины покупок.
Класс продукта
class Product
{
private:
// int id;
// Category category;
std::string name;
std::string description;
float price;
unsigned short int stock;
public:
Product(std::string name, std::string description, float price,
unsigned short int stock);
void setId(int id);
// void setCategory(Category category);
void setName(std::string name);
void setDescription(std::string description);
void setPrice(float price);
void setStock(unsigned short int stock);
int getId();
// Category getCategory();
std::string getName();
std::string getDescription();
float getPrice();
};
Класс каталога
class Catalog
{
// friend class ShoppingCart;
private:
std::vector<Product> catalog;
std::vector<Product>::iterator it;
public:
/**
* TODO: The createProduct(), deleteProduct() and updateProduct() method should only be accessible by the admin user
*/
std::vector<Product> getCatalog();
// add product to catalog -> admin
void productCreate(Product p);
// delete product from catalog -> admin
void productDelete(std::string name);
// update a product -> admin
void productUpdate(std::string &name);
// list products inside catalog
void productList();
// search products
bool productSearch(std::string name);
};
Класс ShoppingCart
class ShoppingCart
{
private:
// vector that contains products to order
std::vector<Product> shoppingCart;
Catalog catalog;
// int quantity;
public:
void cartList();
int cartSize();
void addToCart(std::string);
void deleteFromCart(std::string);
void clearCart();
};
Поскольку этот проект основан на тексте (терминал), я хочу, чтобы пользователь мог добавить товар в свою корзинунабрав название продукта.Мою логику для этого можно увидеть в коде ниже:
метод addToCart из класса ShoppingCart
void ShoppingCart::addToCart(string name)
{
/**
* BUG: Doesnt add objects to the shoppingcart vector
*/
for (Product p : catalog.getCatalog())
{
if (p.getName() == name) {
shoppingCart.push_back(p);
} else {
printf("Oops.. %s doesn't seem to exist in our catalog.",
name.c_str());
}
}
}
Просмотр, который получает пользовательский ввод
void View::shoppingcart()
{
string productName;
cout << "Add to cart: ";
cin >> productName;
cart.addToCart(productName);
printf("You added '%s'", productName.c_str());
cout << endl;
}
когда я выполняю этот код, ошибки не выдаются, но на самом деле ничего не добавляется к вектору корзины, размер остается равным 0. Что я делаю не так?Или я что-то здесь упускаю?Имейте в виду, что я новичок в программировании на C ++.