Можно ли использовать строку для вызова функции / атрибута класса в C ++? - PullRequest
0 голосов
/ 30 апреля 2020

Я пытаюсь вызвать функцию / атрибут члена класса на основе входной строки. Вот с чем я борюсь:

template <typename T>
class Signalling
{
public:
    T                   value;
};

class Signals
{
public:
    Signalling<bool>    s1; 
    Signalling<int>     s2; 
};

void main(){
   std::string name = "s1";
   Signalling<int> value = 5; // this will have different types

   Signals newSignal;

   if (name == "s1")
       newSignal.s1 = value;

   else if (name == "s2")
       newSignal.s2 = value;

// what I actually want to reach in some form is:
// newSignal.(name) = value !!??

}

Так что в основном мне нужно вызвать соответствующий член класса, имя которого совпадает с именем входной строки. Приведенный выше код работает с if / else, но, поскольку количество сигналов (здесь s1, s2 ..) слишком много, было бы невозможно go пройти через все случаи, и мне нужно найти обходной путь.

Я уже попробовал эту ссылку , но не смог запустить ее: \

Спасибо за любую помощь заранее.

1 Ответ

0 голосов
/ 30 апреля 2020

Нет способа сделать это, вместо того, чтобы использовать переключатель, также в вашей ссылке хорошая идея использовать std :: map. Если вы используете переключатель, не забудьте использовать break; Более короткий путь, чем switch, использует условие? True: false, но это может создать неясный код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...