универсальный тип
От: larry_g  
Дата: 15.11.02 09:37
Оценка:
есть такое (утрировано ):
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
( выше в псевдокоде)?


}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.