Я использую шаблоны для моей структуры, например:
#pragma pack(push, 1)
template <typename T>
struct S
{
T t;
inline void Set(const T& val) { t = val; }
}
#pragma pack(pop)
T может быть float, int, short или char [10], char [1] или char [2] (и, желательно, любая длина будет большой).
Хотя вышеприведенное кажется вполне подходящим для целочисленных типов, у меня возникают трудности с реализацией части char [n] в этом:
- Мне нужно использовать strncpy или memcpy вместо оператора присваивания
- Используя вышеизложенное, компилятор жалуется на сигнатуру (const char [2] & val) и мой вызов через s.Set ("T").
- Интерфейс между S с целочисленным и символьным типами должен быть таким же, как и общий код, который их вызывает (и неважно, какого они типа).