Могу ли я пройти через (публичные) атрибуты класса C ++? - PullRequest
2 голосов
/ 25 ноября 2010

Я нашел ответ для классов C Structs и C #, но вернулся с пустыми руками относительно C ++. РЕДАКТИРОВАТЬ: В C, вы не можете. В C # это метод GetProperties ().

Контекст : у меня есть класс C ++ с открытыми атрибутами (скажем, Point с X, Y, Z). Я хочу отправить эти атрибуты через UDP клиенту Java. Моя идея состояла в том, чтобы создать буфер байтов (char *) с тремя атрибутами (я позаботился о проблемах с порядком байтов).

prepareForUdp(char * buffer)
 {
   int offset = 0;
   int offsetValue = 4;
   char tempBuffer[16];  

   memcpy( tempBuffer, &X_, sizeof(X_) );
   offset = offset + offsetValue;
   memcpy( tempBuffer + offset, &Y_, sizeof(Y_) );
   offset = offset + offsetValue;
   memcpy( tempBuffer + offset, &Z_, sizeof(Z_) );
   offset = offset + offsetValue;  

   memcpy( buffer, tempBuffer, sizeof(buffer) );
 }

Я хочу, чтобы мой интерфейс был эволютивным, поскольку точка может получить четвертое, пяти или n-е измерение, и я хочу, чтобы мой prepareForUdp () был (относительно) универсальным.

У меня вопрос: как мне пройти (или перебрать) мои атрибуты?

Ответы [ 2 ]

5 голосов
/ 25 ноября 2010

Нет отражения в C ++.Таким образом, ответ, вы не можете:)

2 голосов
/ 25 ноября 2010

Вот статья о рефлексии и о том, как бороться с тем фактом, что с ++ этого не делает.

...