Здравствуйте, MoreHate, Вы писали:
MH>Здравствуйте. Хотел бы услышать сторонние мнения на мою проблему и способ её решения.
MH>Итак, нужно как-то хранить в памяти такую вещь:
MH>MH>struct sItem{
MH> char Name[25];
MH> int ChildCount;
MH> int Size;
MH> void* Value;
MH>};
MH>vector<sItem> Item;
MH>
MH>Задумка такова: в зависимости от Size присваивается тип Value.
MH>1 –char
MH>2 – short
MH>4 – int
MH>более – char[Size]
MH>(то что строка занимает минимум 5 байт сочтем за издержки).
MH>Меня сильно смущают все эти void*. В связи с этим вопрос: как еще можно реализовать массив структур, где один элемент может быть разных типов.
Если не в ладах с boost`ом или вообще с шаблонами, то как вариант объяви базовый класс с необходимыми виртульными методами и переопределяй как хочешь...
class BaseClass
{
public:
virtual char *GetString(){return NULL;}
};
class IntClass : public BaseClass
{
int mInt;
public:
IntClass(int intVal){mInt=intVal;}
};
class CharSizeClass : public BaseClass
{
int mCharSize;
char *mCharVal;
public:
CharSizeClass(char *charVal,int size){mCharSize=size; mCharVal=charVal;}
char *GetString(){return mCharVal;}
};