PDA

Pogledaj cijelu verziju : [Tutorial] Predlošci klasa (C++)



Tracer
24-03-2008, 01:51
Evo jedne poprilično naprednije teme za C++ programere. Riječ je o predlošcima klasa. Naime, postoje predlošci funkcija kojima definiramo "familije" srodnih funkcija koji rade isti posao nad različitim tipovima podataka, no predlošci klasa puno detaljnije definiraju sam tip podatka.

Zapravo, predlošcima klasa omogućavamo da za već postojeće podatke i strukture dodamo nove mogućnosti neovisno o tome od čega se one sastojale. Primjerice, elementima polja u C++u možemo pristupati samo preko indeksa, no bilo kakve druge operacije s poljima moramo sami napisati.

Sada ćemo predloškom klase definirati novi tip podatka koji će predstavljati polje proizvoljnog tipa, no ono će za razliku od običnog polja imati i dodatne mogućnosti poput da nam kaže koliko ima elemenata u polju, i da li se neka vrijednost nalazi u tom polju.


#include <iostream.h>

template <class T>
class Polje
{
public:
T* polje;
int BrojElemenata;

Polje(int n);
~Polje() {delete[]Spolje;}
int Sadrzi(T vrijednost);
};

template <class T> Polje<T>::Polje(int n)
{
BrojElemenata = n;
polje = new T[n];
}

template <class T> int Polje<T>::Sadrzi(T Vrijednost)
{
int pom = 0;
for(int i = 0; i < BrojElemenata; i++)
if(polje[i]S== Vrijednost)
pom = 1;
return pom;
}

int main()
{
// kreiraj polje cijelih brojeva od 100 elemenata
Polje <int> A(100);

// inicijalizacije polja
for(int i = 0; i < 100; i++)
A.polje[i]S= i;

// da li se u polju nalazi broj 99?
cout << A.Sadrzi(99);

// koliki je broj elemenata
cout << A.BrojElemenata;

return 0;
}

U ovom slučaju varijabla A predstavlja int polje od 100 elemenata, ali za razliku od običnog polja možemo odmah doznati broj elemenata i da li se neka vrijednost nalazi u polju. Mogućnosti su bezbrojne i samo trebate smisliti i dodati neku novu funkcionalnost za rad s poljima, no to nikako ne bi bilo moguće da ne postoje predlošci funkcija i klasa.

Kao što sam i napomenuo, ovo je dosta napredan aspekt programiranja u C++u pa zato nemojte se previše kriviti ako odmah ne razumijete, a ako bude pitanja, tu sam ;)

pozdrav

Blacky_123
24-03-2008, 01:53
Hvala
Odlican tutorial

RayDX
26-03-2008, 09:48
Dobar tekst! GG Tracer...

Tracer
26-03-2008, 09:50
Dobar tekst! GG Tracer...SThx ;) GG?

RayDX
26-03-2008, 09:50
Dobar tekst! GG Tracer...SThx ;) GG?

Good Game (akronim/leet stuff)

SkunK
26-03-2008, 10:15
vgg

Plexihack
26-03-2008, 12:53
Super good game :P

Nice tutorial ^^

btw,kad izlazi knjiga?
Ja već štedim :D

Tracer
26-03-2008, 12:54
Super good game :P

Nice tutorial ^^

btw,kad izlazi knjiga?
Ja već štedim :DBude se još par mjeseci sigurno čekalo zbog dizajna, tiska itd... Stigneš uštediti ;)

Plexihack
26-03-2008, 13:03
Super good game :P

Nice tutorial ^^

btw,kad izlazi knjiga?
Ja već štedim :DBude se još par mjeseci sigurno čekalo zbog dizajna, tiska itd... Stigneš uštediti ;)

:rotfl:

Za par mjeseci ja to potrošim i uštedim 5 puta xD

Tracer
26-03-2008, 13:20
Super good game :P

Nice tutorial ^^

btw,kad izlazi knjiga?
Ja već štedim :DBude se još par mjeseci sigurno čekalo zbog dizajna, tiska itd... Stigneš uštediti ;)

:rotfl:

Za par mjeseci ja to potrošim i uštedim 5 puta xDEto, onda nije problem ;)