2. Szablony klas

2.3. Pozatypowe parametry szablonów klas

Zestaw możliwych parametrów szablonów klas jest taki sam jak dla szablonów funkcji. Podobnie najczęściej wykorzystywane są wyrażenia całkowitoliczbowe. W naszym przykładzie ze stosem możemy ich użyć do przekazania rozmiaru stosu:


template<typename T, size_t N=100> class TCStos {
private:
    T m_elementy[N];
    size_t m_szczyt{0};
public:
    TCStos():m_szczyt(0) {};
    void wstaw(T val) {m_elementy[m_szczyt++]=val;}
    T zdejm() {return m_elementy[--m_szczyt];}
    bool czyPusty() {return (m_szczyt==0);}
};

Zauważcie, że teraz możemy korzystać ze stosu jak do tej pory - podając jedynie typ. Wtedy dostaniemy stos o 100 elementach. Jeśli natomiast podamy i typ, i wartość liczbową - utworzymy stos o dowolnym rozmiarze.


int main() {
    TCStos<string, 2500> st ; // mamy stos na 2500 elementów
    ...
}

Przy definicji wartości pozatypowych - zazwyczaj te umieszczane są na końcu, a nie na początku listy definicji, gdyż to one częściej mają sensowną wartość domyślną.