Usare i template in C++

Mattepuffo's logo
Usare i template in C++

Usare i template in C++

In C++ i templates ci permettono, sostanzialmente, di usare i generics.

Quindi possiamo creare delle funzioni con tipi generici, e poi usarle a nostro piacimento.

In questo articolo ne vediamo un paio di esempi.

Cominciamo da un function template:

#include <iostream>

using namespace std;

template <typename T> T getMax(T a, T b) {
    return (a > b) ? a : b;
}

int main() {
    cout << getMax<int>(3, 5) << endl;
    cout << getMax<char>('g', 'e') << endl;


    return 0;
}

Come potete vedere la funzione ci restituisce il valore "maggiore".

Ma la richiamiamo due volte:

  • una volta passandogli dei numeri
  • la seconda passando dei char

Esistono anche i class template:

#include <iostream>

using namespace std;

template <typename T> class MyArray {
private:
    T* ptr;
    int size;

public:
    MyArray(T arr[], int s);
    void print();
};

template <typename T> MyArray<T>::MyArray(T arr[], int s) {
    ptr = new T[s];
    size = s;
    for (int i = 0; i < size; i++)
        ptr[i] = arr[i];
}

template <typename T> void MyArray<T>::print() {
    for (int i = 0; i < size; i++) {
        cout << " " << *(ptr + i);
    }

    cout << endl;
}


int main() {
    int arr[5] = { 1, 2, 3, 4, 5 };

    MyArray<int> a(arr, 5);
    a.print();

    return 0;
}

Enjoy!


Condividi

Commentami!