Использование макросов C ++ для построения имени метода для вызоваC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Использование макросов C ++ для построения имени метода для вызова

Сообщение Anonymous »

У меня есть класс Foo из сторонней библиотеки, в которой есть много сеттеров с аргументом строки, называемого как set_ parameter_name (std :: string value). И мне нужно настроить экземпляр класса, используя простой анализатор, который возвращает необходимое значение требуемого параметра, например: < /p>

Код: Выделить всё

std::string value = parser.parse("parameter_name");
< /code>
Итак, код выглядит так: < /p>
Foo foo = Foo();
Parser parser = Parser();
foo.set_a(parser.parse("a"));
foo.set_b(parser.parse("b"));
// lots of strings
foo.set_z(parser.parse("z");
< /code>
Этот код довольно уродливый, поэтому я пытаюсь заменить его на макрос C ++. Идея заключается в использовании списка имен для автоматического генерации кода с помощью препроцессора, но я не могу представить, как это сделать.#define PARAM_LIST "a", "b", "c", "d" // lots of elements

#define PARAM_SETTER(foo, param, parser) ({ \
foo.set_#param(parser.parse(param)); \ // 

Подробнее здесь: [url]https://stackoverflow.com/questions/79767439/using-c-macros-to-construct-a-method-name-to-call[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»