» »

<> operator v C++

<> operator v C++

zorangutan ::

Živjo,

mi lahko kdo prosim pomaga, kaj pomeni večji-manjši oklepaj pri definicijah classov,
npr:
typedef DataStructures::Spr1<VELIKOST, ClassX> 	ClassY;


nato pa definicija ClassY
ClassY  spremenljivkaY;


ali pa:
DataStructures::Spr1 <VELIKOST, ClassX> 	ClassY;



Kaj točno pomeni oklepaj
<>
v C++ ?

Hvala za pomoč!

Spura ::

mallard ::

Dva oglata oklepaja nista operator, ampak označujeta seznam parametrov za neko šablono (template). Razred Spr1 tudi ni pravi razred, ampak je šablona razreda. Nekje je deklariran kot (domnevam, glede na primer, ki si ga dal):
namespace DataStructures {
    template < size_t Size, typename T>
    class Spr1 {
        /* koda... */
    };
}


Šablone se instanciirajo (po njih prevajalnik generira kodo), ko jih prvič uporabiš v neki deklaraciji, pri tem pa jim moraš podati parametre. Šablona, definirana zgoraj, vzame dva parametra. Prvi je konstanta tipa size_t (ali katerega drugega tipa, ki se lahko implicitno pretvori v size_t), drugi pa ime nekega tipa. Torej:
ClassX { /* koda... */ };
const int VELIKOST = 10;
DataStructures::Spr1 <VELIKOST, ClassX>   ClassY;


Možno je tudi naredit šablono za funkcijo:
template<typename T>
void print(T param)
{
    T obj = param;
    std::cout << i;
}

int i = 42;
print<int>(i); // seznam šablonskih parametrov gre med ime funkcije in seznam parametrov za funkcijo
print(i);      // lahko ga pa tudi izpustimo


V primeru funkcijske šablone ni vedno treba podat parametrov za šablono. V zgornjem primeru prevajalnik sam deducira tip (T = int) parametra. Precej funkcij v standardni knjižnici je v bistvu šablon (npr. tiste v headerju algorithm), ravno tako razredi vector, list, string, itd...

Vzemi si kakšno knjigo, šablone so lahko precej zoprne za zakapirat :)

Zgodovina sprememb…

  • spremenilo: mallard ()


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

C - shranjevanje rezultatov iz baze v array

Oddelek: Programiranje
71234 (933) Randomness
»

[Java - DN] Naključna števila

Oddelek: Šola
121364 (893) nyler
»

Analiza kode: goto rabimo po pameti

Oddelek: Novice / Znanost in tehnologija
2913848 (10408) one too many
»

vector::iterator problemi, brisanje podatkov iz vektorja

Oddelek: Programiranje
81135 (986) mn
»

[C++] Functor za izračun osnovne statistike podatk. strukture (vector,list...)

Oddelek: Programiranje
91496 (1409) Vesoljc

Več podobnih tem