bungalally:
The point would be that the functions would be the of the same name, but pass and return different data types depending on the version of the part passed by the constructor.
You may not need a class at all. You can make multiple functions with different data types, of the same name, without using classes or base classes.
And if they do something virtually identical (eg. add things together) then you can use templates.
Example:
File: template_test.h
template<typename T> T add (const T x, const T y)
{
return x + y;
} // end of add
Sketch:
#include "template_test.h"
void setup ()
{
Serial.begin (115200);
int a = 5, b = 7;
Serial.println (add (a, b));
float c = 6.2, d = 7.3;
Serial.println (add (c, d));
long e = 100000, f = 500000;
Serial.println (add (e, f));
} // end of setup
void loop () {}
The templated class "add" adds together any two things of the same type (eg. int, byte, char, float, unsigned long) and returns the same type. The type in the template is called T.
In the main sketch the compiler chooses the correct version of the function based on the arguments to it (eg. if you pass ints to add, you get an int back).
Output:
12
13.50
600000