У меня есть файл заголовка и исходный файл для программы, где с помощью массива я могу хранить, извлекать и распечатывать, но я не могу написать основную функцию - PullRequest
0 голосов
/ 23 февраля 2020

Здесь я хочу объявить класс, который будет представлять записи, и он должен иметь возможность хранить значения типа integer, string, float в одной строке. У него также должна быть функция распечатки всех значений.

Я думаю о перегрузке нескольких операторов, но я не могу извинить это, если кто-нибудь поможет мне с этим, пожалуйста.

//header file

#ifndef UNSORTEDARRAY_H_INCLUDED
#define UNSORTEDARRAY_H_INCLUDED

const int MAX_ITEMS = 5;

template <class ItemType>
class UnsortedArray
{
    public :
        UnsortedArray();
        void MakeEmpty();
        bool IsFull();
        int LengthIs();
        void InsertItem(ItemType);
        void DeleteItem(ItemType);
        void RetrieveItem(ItemType&, bool&);
        void ResetList();
        void GetNextItem(ItemType&);
    private:
        int length;
        ItemType info[MAX_ITEMS];
        int currentPos;
};

#endif // UNSORTEDARRAY_H_INCLUDED


//source file

#include "UnsortedArray.h"

template <class ItemType>
UnsortedArray<ItemType>::UnsortedArray()
{
    length = 0;
    currentPos = -1;
}
template <class ItemType>
void UnsortedArray<ItemType>::MakeEmpty()
{
    length = 0;
}
template <class ItemType>
bool UnsortedArray<ItemType>::IsFull()
{
    return (length == MAX_ITEMS);
}
template <class ItemType>
int UnsortedArray<ItemType>::LengthIs()
{
    return length;
}
template <class ItemType>
void UnsortedArray<ItemType>::InsertItem(ItemType item)
{
    info[length] = item;
    length++;
}
template <class ItemType>
void UnsortedArray<ItemType>::DeleteItem(ItemType item)
{
    int location = 0;
    while (item != info[location]){
        location++;}

    info[location] = info[length - 1];
    length--;
}
template <class ItemType>
void UnsortedArray<ItemType>::RetrieveItem(ItemType& item, bool &found)
{
    int location = 0;
    bool moreToSearch = (location < length);
    found = false;
    while (moreToSearch && !found)
    {
        if(item == info[location])
        {
            found = true;
            item = info[location];
        }
        else
        {
            location++;
            moreToSearch = (location < length);
        }
    }
}
template <class ItemType>
void UnsortedArray<ItemType>::ResetList()
{
    currentPos = -1;
}
template <class ItemType>
void UnsortedArray<ItemType>::GetNextItem(ItemType& item)
{
    currentPos++;
    item = info [currentPos] ;
}
...