Mam pracę domową, która każe mi się wykonać następujące czynności:użyciu szablonów w C++
zaprojektować szablon klasy o nazwie FlexArray który oferuje elastycznym tablicę indeksów. Użytkownik klasy może ustawić niższy indeks i górny indeks po zadeklarowaniu obiektu.
Przykłady kodu użytkownika:
FlexArray a (1,5); // niższy indeks to 1, a górny indeks to 5 FlexArray b (-5, 10); // niższy wskaźnik wynosi -5 a górna indeksu jest 10
podać następujące funkcje dla swojej klasy:
- domyślny konstruktor
- parametryzowane konstruktor, w którym użytkownik określony indeks dolny i górny indeks
- destructor
- konstruktor kopii
- operatorowi przypisanie
- przeciążony [] operator z podobną semantyką do [] już używany z wbudowanymi tablicami.
Błędy w warunkach PRE mogą być obsługiwane za pomocą instrukcji assert lub bloków try/catch. Nie ma zmiany rozmiaru oferowanej macierzy. Indeksy dolne muszą znajdować się w zasięgu.
Książka naprawdę nie pomaga przy tworzeniu szablonów. Miałem nadzieję, że ktoś da mi wskazówki dotyczące tego problemu i sprawdzi, czy mój kod jest na dobrej drodze. Próbowałem uruchomić ten problem przez bardzo ograniczony zakres środków książek i różnych online i otrzymała:
#ifndef H_templates
#define H_templates
#include <iostream>
using namespace std;
template <typename T>
class FlexArray
{ public:
FlexArray(); // POST: empty FlexArray
FlexArray(LI,UI); // POST: Parameterized Constructor
~FlexArray(); // POST: destructor
CopyArr(Array* sourceArray, Array* destinationArray, size); // POST: Copies array
//Overloading the assignment operators to add arrays(?) Unsure if
// this is what is meant by the original question
FlexArray operator+
(const FlexArray& otherFlexArray) const;
//Overload the operator +
FlexArray operator-
(const FlexArray& otherFlexArray) const;
//Overload the operator -
FlexArray operator[]
(const FlexArray& otherFlexArray) const;
//Overload the operator []
private:
T FlexArray[size]; // Flex array
int size; // number of items Array
int LI; //Lower Index
int UI; //Upper Index
};
template <typename T>
FlexArray<T>::FlexArray()
// POST: empty FlexArray
{ size = 0; }
template <typename T>
FlexArray<T>::~FlexArray()
// POST: destructor
{ }
template <typename T>
FlexArray<T>::CopyArr(Array* sourceArray, Array* destinationArray, size)
//Pre: Takes 3 arguments, the original array, the array to copy too, and, the size of array
// POST: Copies the array
{
for(int i=0; i<size; i++){
sourceArray[i] = destinationArray[i]
}
}
#endif
Operator przypisania to 'operator ='. –
+1 za zadanie domowe! – Marlon
Szablon w C++ to rodzina obiektów - z tymi samymi funkcjami, ale hostująca inny obiekt. Na przykład użyj szablonów dla stosów, kolejek, list. NIE DLA RZECZY, KTÓRE MOGĄ "ZWIĄZEĆ Z NIĄ; (jak kształty/prostokąty/kwadraty/okręgi ...) –