C++ has some really great advantages over languages like Java. It allows for abstract data types using the keyword typename. In this simple program, I create a class called Array and pass to it a typename and an integer to declare its size. I’m then able to assign array elements a value that corresponds to the data type I assigned it.
I use three typenames in the example, including int, double, and char.
Running

Source Code
main.cpp
#include <iostream>
#include "array.h"
using namespace std;
int main(int argc, char** argv)
{
Array<int, 5> data1;
data1[3] = 3;
cout << data1[3] << endl;
Array<double, 2> data2;
data2[2] = 7.6;
cout << data2[2] << endl;
Array<char, 2> data3;
data3[2] = 'H';
data3[5] = 's';
cout << data3[2];
cout << data3[5];
return 0;
}
array.h
#ifndef ARRAY_H
#define ARRAY_H
template <typename T, int N>
class Array
{
public:
Array()
{
size = N;
data = new T[size];
}
T& operator[](int index)
{
return data[index];
}
~Array()
{
if (data) delete[] data;
}
private:
T *data;
int size;
};
#endif