У меня есть массив, который является списком FIFO и к которому я добавляю свои записи данных.
Моя запись данных может быть любого из стандартных типов (строка, char, int, long, unsigned, float, double), которые я нажимаю на свой массив, используя функцию.
Я хочу позже прочитать эту запись данных, чтобы они были добавлены.Один массив, несколько типов
Это то, что я пробовал:
class List
{
typedef std::pair<typename, std::vector<char>> Record; // typename ??
public:
template <typename T>
void addRecord(T value)
{
char* arr = reinterpred_cast<char*>(&value); // Casting ?
// Convert to Record and push to _records
}
template <typename T>
T getRecord(std::vector<Record>::iterator record) const
{
// Convert Record to T and return
}
private:
std::vector<Record> _records;
}
Как конвертировать из этих типов в байты массива или есть другой способ сделать это?
Пример пути я хочу использовать это:
List list;
list.addRecord("Test string");
list.addRecord(10);
list.addRecord(999999);
list.addRecord("Test string 2");
list.addRecord('X');
...
А потом читать их точно так же:
std::string testString = list.getRecord(...);
char testChar = list.getRecord(...);
int testInt = list.getRecord(...);
....
'string' не является базовым типом, который сохранится в этом виде лечения в целом. Почему вы не используете 'boost :: variant'? –
Использование union или void * – texasbruce
boost - вещь в этом случае, но, к сожалению, я забыл упомянуть, что одним из моих требований к проекту является использование только стандартных библиотек. – user3065410