Code:
#include <iostream>
#include <iomanip>
using namespace std;

template <class T, int element>
class Array
{
public:
  void putElement(T x, int index);
  T getElement(int index);
  int &setgetInteger();

private:
  T item[element];
  int integer;
};

template <class T, int element>
void Array<T, element>::putElement(T x, int index)
{
  item[index] = x;
}

template <class T, int element>
T Array<T, element>::getElement(int index)
{
  return item[index];
}

template <class T, int element>
int Array<T, element>::setgetInteger()
{
  return integer;
}

int main()
{
  char *name[] = {"Meier", "Schulze", "Lehmann", "Aust"};
  double contents[]= {2200.5, 1300.5, 1700.30, 4888.80};

  Array<char *, 4> nameArray;
  Array<double, 4> contentsArray;

  nameArray.setgetInteger() = 56;

  for(int i = 0; i < 4; i++)
  {
    nameArray.putElement(name[i], i);
    contentsArray.putElement(contents[i], i);
  }

  for(i = 0; i < 4; i++)
  {
    cout << setiosflags(ios::left) << setw(10) << nameArray.getElement(i) 
         << resetiosflags(ios::left) << setw(8) << contentsArray.getElement(i) << endl;
  }

  cout << "Integer output: " << nameArray.setgetInteger() << endl;

  return 0;
}
This doesn't compile because of the setget function that I put in. My question is why can't I make it work with a specific value being returned? Is this a limitation of template classes or something? Sorry for the silly question, I'm just not familiar with this.