concat string и int как имя свойства в C ++ [duplicate]

Это то, что решило это для меня. Первоначально я отправился в 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>

Тогда он работал.

6
задан Skan 27 February 2012 в 18:43
поделиться

5 ответов

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"];
8
ответ дан dasblinkenlight 24 August 2018 в 06:41
поделиться

Вы можете создать объект-обертку для своей структуры с помощью access / get accessors, который позволит вам перебирать строковые значения для заполнения / чтения базовой структуры, которая является статической.

0
ответ дан dweeves 24 August 2018 в 06:41
поделиться

Нет. C ++ не имеет отражения. Java все же. Неудивительно, что связанный с SOA материал, скорее всего, встречается с такими языками, как Java, чем с такими языками, как C.

1
ответ дан foxx1337 24 August 2018 в 06:41
поделиться

Краткий ответ: нет. Это C ++, статически скомпилированный язык, где имена членов структуры преобразуются компилятором в смещения памяти. Он не динамичен, как PHP или Python, где среда выполнения связана со всеми ссылками на переменные.

2
ответ дан Jonathon Reinhart 24 August 2018 в 06:41
поделиться

На самом деле это невозможно сделать; информация, в которой вы нуждаетесь, больше не присутствует во время выполнения. Возможно, вы сможете что-то сделать с помощью map и некоторых указателей, но, честно говоря, вам, вероятно, было бы лучше просто обернуть его в функцию, которая принимает значение map и помещает значения в соответствующие поля.

1
ответ дан spencercw 24 August 2018 в 06:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: