есть такое (утрировано ):
class Stuff
{
Type* t;
public:
Type* GetType() {return t};
};
class Type
{
//......
public:
virtual Type* GetValue() {.....};
//......
};
class TypeInt: public Type
{
int i;
public:
// инициализация i
Type* GetValue() {return &i;}; // или что возвращать?
//.....
};
тоже для типов double, char* ...
потом где-то в
void f ()
{
Stuff* vec[100] ;
Stuff* p1=new Stuff(new Type);
Stuff* p2=new Stuff(new TypeInt);
// vec [100] состоит из p1,p2 ...
vec[i-e]->GetType()->GetValue() — вернет Type*
Дальше можно сделать преобразования Type* к unsigned int* или unsigned char* и т.д
в зависимости от потомков Type т.е. какой -то переключатель ставить.
Как бы Без этих преобразований , но чтобы не вводить новые классы получать именно
правильное значение от GetValue ( т.е. для TypeInt например , получить значение i
( выше в псевдокоде)?