Re: Массив разных данных
От: nomicon Россия  
Дата: 20.12.05 18:06
Оценка:
Здравствуйте, 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;}
};
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.