Я пытаюсь написать общий шаблон c для структуры данных, которая создается из входящего потока («сообщения») из нескольких частей. Подразделы сообщения упорядочены стандартным способом, определяемым сообщением «категория» (чтобы избежать использования типа как не cpp тип), и каждая подчасть относится к типу cpp. Например, сообщение категории A может выглядеть как [int x, double y]. Я хотел бы написать структуру для каждой категории сообщений для чтения в данных. Я знаю, что cpp не имеет отражения, которое позволяло бы ему естественным образом упорядочивать элементы данных класса / структур, однако порядок / возможность перебирать членов структуры с информацией о типе был бы именно тем, что мне нужно. Каковы параметры шаблона проектирования, которые позволят перебирать элементы структуры? Например, при инициализации структура может иметь std::vector<void*>
, который инициализируется для всех элементов данных, но это не несет информацию о типе, и я не могу придумать, как в общем случае сказать, что элемент данных должен быть включен или где в векторе он находится сидит.
Было бы идеально иметь что-то вроде дизайна:
struct MessageA
{
Ordered<int> x_;
Ordered<double> y_;
MessageA(int x, double y):
x_(0, x), y_(1, y)
...
}
Возможно, с унаследованным классом OrderedStruct
, а также