只是想知道我的代码是什么样子,认为它是“教授的输入”,因为我不参加本学期的课程。另外,我想指出的是,这将很快过渡到一种数据库方法,在这种方法中,我使用MySQL数据库来获取InventoryItems。
Inventory.h
#pragma once
#include <vector>
#include <iostream>
#include "InventoryItems.h"
class Inventory
{
public:
Inventory();
~Inventory();
void createNewInventoryItem(std::string itemName = "", unsigned int maxQuantity = 0, unsigned int orderThreshold = 0,
double price = 0.0, int quantityInInventory = 0);
void deleteInventoryItem(int posInVector);
InventoryItems* getItem(int posInVector);
private:
std::vector<InventoryItems*> m_inventory; //NOTE: does not use a smart pointer, instead the pointer is deleted from the heap in the deleteInventoryItem function
// if deleteInventoryItem is not called at the end of the inventory objects life cycle the inventory objects deconstructor will
// loop through all elements in m_inventory and call deleteInventoryItem for each item
};Inventory.cpp
#include "Inventory.h"
Inventory::Inventory()
{
std::cout << "Inventory created" << std::endl;
}
Inventory::~Inventory()
{
for (int i = 0; i < m_inventory.size(); i++) {
deleteInventoryItem(i);
}
std::cout << "Inventory destroyed" << std::endl;
}
void Inventory::createNewInventoryItem(std::string itemName, unsigned int maxQuantity, unsigned int orderThreshold,
double price, int quantityInInventory)
{
InventoryItems* newItem = new InventoryItems;
newItem->createInventoryItem(itemName, maxQuantity, orderThreshold, price, quantityInInventory);
m_inventory.emplace_back(newItem);
}
void Inventory::deleteInventoryItem(int posInVector)
{
delete m_inventory.at(posInVector);
m_inventory.erase(m_inventory.begin() + posInVector);
}
InventoryItems* Inventory::getItem(int posInVector)
{
return m_inventory.at(posInVector);
}清单类实际上是属于它自己的,在我合并我的数据库之前,这只是一个概念的证明(例如,inventoryItems是DB和查询的位置持有者,因此我这里不包括它)。
发布于 2021-02-28 17:11:13
除了马丁详尽的回答外,还有一点是:
标头使用std::string,但不包括<string>。相反,它包括它不使用的<iostream> (并且可以移动到实现文件中)。
https://codereview.stackexchange.com/questions/256525
复制相似问题