Izmislite si dva (izvirna) razreda (ni dovoljena uporaba razredov iz prejšnjih nalog in primerov iz predavanj). Vsak naj ima vsaj dve instančni spremenljivki, privzeti in nastavitveni konstruktor ter metodo toString.
Ustvarite datoteko VectorUtil.h, kjer boste imeli več šablon fukcij. Datoteka naj vsebuje samo funkcije, brez razreda. Napišite (glej spodaj glavni program, vendar uporabite lastne razrede):
Šablono funkcije fillDefault, ki prejme vektor kot argument in ga napolni z N (parameter šablone) objekti ( klic default konstruktorja).
Šablono funkcije toString, ki prejme vektor kot argument in vse elemente s pomočjo metode toString združi v en string in ga vrne.
Šablono funkcije print, ki prejme vektor kot argument in izpiše vse elemente z uporabo funkcije toString nad objekti.
Šablono funkcije reverse, ki prejme vektor kot argument in vrne vektor z obratnim vrstnim redom (ni dovoljena uporaba knjižnic kot npr. std::reverse).
Naredite specializacijo šablone funkcije fillDefault za en razred tako, da ne kličete privzetega konstruktorja, ampak nastavitveni konstruktor (naključno generirajte vrednosti).
Primer glavnega programa:
#include #include "ColorCode.h" #include "VectorUtil.h" #include "Point.h"
using namespace std;
int main() { vector list; cout << "Default generator of 40 objects" << endl; fillDefault<40>(list);
cout << "Prints by using toString function" << endl; print(list); cout << toString(list);
cout << "Return new list with Reversed order" << endl; vector list2 = reverse(list); print(list2);
vector grades; fillDefault<12>(grades); print(grades); return 0; }