Мне нужно вызвать члена определенного (публичного) класса через локальную переменную, и мне интересно, как я могу это сделать. Моя проблема в том, что какая переменная для вызова в классе зависит от ряда значений, поэтому мне действительно нужно использовать переменную для вызова члена, а не просто набирать его имя. Например:
У меня есть предположения класса, со многими переменными-членами (все из которых представляют интерес типа double). Допустим, у меня есть пять потенциальных переменных, которые я хочу вызвать в предположениях, но только одна из них:
Мой код в настоящее время генерирует строку, содержимое которой равно одному из пяти приведенных выше терминов — теперь мне просто нужно вызвать эту переменную-член — могу ли я сделать это косвенно? Итак, у меня есть одна переменная с именем «VariableKey», содержимое которой равно одной из пяти переменных выше — я хочу сделать следующий вызов:
Assumptions.VariableKey
Но пусть VariableKey интерпретируется как косвенная ссылка.
Это также абстракция / упрощение моей реальной проблемы — число возможных значений больше похоже на 75, поэтому я хочу, если возможно, избегать кодирования каждой отдельной переменной.
Заранее спасибо!
Вы не можете сделать это напрямую в C ++. Более нормальный подход — иметь перечисление, которое указывает, какую переменную использовать, и установить ее. Затем у вас есть массив / вектор значений, и перечислитель действует как индекс в этом контейнере.
Вы также можете создать карту, которая отображает строки на определенное значение, но это может добавить дополнительные издержки.
То, что вы пытаетесь сделать, называется «Отражение», и C ++ не имеет встроенной поддержки для него; вы можете посмотреть на добавление через библиотека, но было бы проще просто поместить ваши переменные-члены «Stem» в карта вместо строки удваивается.
Вы должны добавить метод выбора в класс Assump, взяв ключ в качестве ввода.