Witam, piszę klasę, która ma reprezentować ogólny parametr. Parametr może być różnego typu (bool, integer, float, string) dlatego klasa zawiera strukturę posiadającą zmienną typu int, double i string. W klasie mam również pole type, które zostaje ustawione na dany typ podczas tworzenia instancji klasy ( parametr ustawia typ raz w konstruktorze i nie ma potrzeby zmieniać go w trakcie życia obiektu ). O ile nie mam problemu z zapisywaniem wartości do parametru, w zależności od typu, to problem pojawia się przy potrzebie stworzenia funkcji odczytującej parametr. Jak napisać taką funkcję, albo jak obejść problem typu zwracanego przez funkcję GetValue() w zależności od typu przechowywanego w tej klasie? Za wszelkie pomysły i uwagi z góry dziękuję.
class Parameter
{
public:
enum TypeOfParameter { BOOLEAN=0, INTEGER, FLOAT, STRING };
Parameter(int id, TypeOfParameter type) : id(id), type(type) { };
TypeOfParameter GetType() const { return type; }
void ChangeValue(bool newValue);
void ChangeValue(int newValue);
void ChangeValue(double newValue);
void ChangeValue(const std::string& newValue);
// funkcja GetValue() zależna od przechowywanego typu
private:
typedef struct { int vInt; double vFloat; std::string vString; } TValue;
int id;
TypeOfParameter type;
TValue value;
};