Abstract base class

Well all you need is the size, and you can work that out:

#if defined(ARDUINO) && ARDUINO >= 100
  #include "Arduino.h"
#else
  #include "WProgram.h"
#endif

template<typename T> T add (const T x, const T y)
  {
  Serial.print ("Size of data is ");
  Serial.println (sizeof (T));
  
  return x + y;
  }

And in any case it looks like someone has already done the hard work:

http://arduino.cc/playground/Code/EEPROMWriteAnything

i probably should of explained a bit more of what i was doing but anyway.

That can usually save quite a bit of time ... yours and ours.