Это то, что решило это для меня. Первоначально я отправился в Google и скопировал и наклеил их предлагаемый фрагмент для jQuery на их странице CDN:
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
В фрагменте нет HTTP:
или HTTPS:
в атрибуте src
, но мой браузер, FireFox, нуждался в этом, поэтому я изменил его на:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
Тогда он работал.
C ++ не имеет встроенных возможностей reflection для более динамических языков, поэтому вы не можете делать то, что вы хотели бы использовать в своих возможностях языка.
Однако, если все члены одного типа, вы можете сделать это с помощью карты указателей на членов и небольшой подготовки:
// typedef for the pointer-to-member
typedef int X::*ptr_attr;
// Declare the map of pointers to members
map<string,ptr_attr> mattr;
// Add pointers to individual members one by one:
mattr["xx"] = &X::xx;
mattr["yy"] = &X::yy;
// Now that you have an instance of x...
X x;
// you can access its members by pointers using the syntax below:
x.*mattr["xx"] = A["aa"];
Вы можете создать объект-обертку для своей структуры с помощью access / get accessors, который позволит вам перебирать строковые значения для заполнения / чтения базовой структуры, которая является статической.
Нет. C ++ не имеет отражения. Java все же. Неудивительно, что связанный с SOA материал, скорее всего, встречается с такими языками, как Java, чем с такими языками, как C.
Краткий ответ: нет. Это C ++, статически скомпилированный язык, где имена членов структуры преобразуются компилятором в смещения памяти. Он не динамичен, как PHP или Python, где среда выполнения связана со всеми ссылками на переменные.
На самом деле это невозможно сделать; информация, в которой вы нуждаетесь, больше не присутствует во время выполнения. Возможно, вы сможете что-то сделать с помощью map
и некоторых указателей, но, честно говоря, вам, вероятно, было бы лучше просто обернуть его в функцию, которая принимает значение map
и помещает значения в соответствующие поля.