I need to update Inventory::add_item() function definition so that before adding a new object to the items array, it first checks whether the identical object already is present and add new item only if it isn’t. I cannot understand how to make comparison between new_item and objects which are already exist using Inventory::find_item function.
#include "Inventory.h"
void Inventory::add_item(std::string modelName, float screenSize, int capacity, iPhone::Colour colour)
{
    if (_count < Inventory::MAX_SIZE)
    {
        iPhone new_item;
        new_item.init( modelName, screenSize,  capacity, colour);
        _items[_count] = new_item;
        _count++;
    }
}
iPhone Inventory::find_item(iPhone &query)
{
    for (size_t i = 0U; i < _count; i++)
    {
        iPhone& item = _items[i];
        //for string type property
        if (query.get_modelName()!= ""
            && query.get_modelName() != item.get_modelName())
            continue;
        // for number type property
        if (query.get_screenSize() != 0
            && query.get_screenSize() != item.get_screenSize())
            continue;
        // for number type property
        if (query.get_capacity() != 0
            && query.get_capacity() != item.get_capacity())
            continue;
        //for string type property
        if (query.get_colour() != iPhone::Colour::ANY
            && query.get_colour()!= item.get_colour())
            continue;
        return item;
    }
    return iPhone{};    // return the default value object (or null object)
}
Here are the other parts of code: Displaying objects which are found in C++
Aucun commentaire:
Enregistrer un commentaire