C ++ Доступ к открытым членам класса с переменной

Мне нужно вызвать члена определенного (публичного) класса через локальную переменную, и мне интересно, как я могу это сделать. Моя проблема в том, что какая переменная для вызова в классе зависит от ряда значений, поэтому мне действительно нужно использовать переменную для вызова члена, а не просто набирать его имя. Например:

У меня есть предположения класса, со многими переменными-членами (все из которых представляют интерес типа double). Допустим, у меня есть пять потенциальных переменных, которые я хочу вызвать в предположениях, но только одна из них:

  1. VariableStem_One
  2. VariableStem_Two
  3. VariableStem_Three
  4. VariableStem_Four
  5. VariableStem_Five

Мой код в настоящее время генерирует строку, содержимое которой равно одному из пяти приведенных выше терминов — теперь мне просто нужно вызвать эту переменную-член — могу ли я сделать это косвенно? Итак, у меня есть одна переменная с именем «VariableKey», содержимое которой равно одной из пяти переменных выше — я хочу сделать следующий вызов:

Assumptions.VariableKey

Но пусть VariableKey интерпретируется как косвенная ссылка.

Это также абстракция / упрощение моей реальной проблемы — число возможных значений больше похоже на 75, поэтому я хочу, если возможно, избегать кодирования каждой отдельной переменной.

Заранее спасибо!

1

Решение

Вы не можете сделать это напрямую в C ++. Более нормальный подход — иметь перечисление, которое указывает, какую переменную использовать, и установить ее. Затем у вас есть массив / вектор значений, и перечислитель действует как индекс в этом контейнере.

Вы также можете создать карту, которая отображает строки на определенное значение, но это может добавить дополнительные издержки.

2

Другие решения

То, что вы пытаетесь сделать, называется «Отражение», и C ++ не имеет встроенной поддержки для него; вы можете посмотреть на добавление через библиотека, но было бы проще просто поместить ваши переменные-члены «Stem» в карта вместо строки удваивается.

0

Вы должны добавить метод выбора в класс Assump, взяв ключ в качестве ввода.

0
По вопросам рекламы [email protected]