Общие функции Mutator / Accessor - PullRequest
1 голос
/ 07 июня 2019

Есть ли способ создания универсальных функций set / get в C ++? У меня есть класс с большим количеством атрибутов, но без функций (хорошо, я, вероятно, должен использовать структуру), и я действительно не хочу писать отдельные функции set и get для каждого члена данных. Функции, о которых я думаю, будут что-то вроде 'set_member (переменная T), где T может быть чем угодно, примитивными типами или определенными пользователем. Я предполагаю, что, возможно, вы могли бы создать структуру со структурой в качестве члена, а затем всякий раз, когда вы хотите получить доступ к конкретному члену структуры-члена, вы обращаетесь к ней по соответствующему указателю. Я пытался написать что-то, чтобы добиться этого, но пока не повезло.

Ответы [ 2 ]

1 голос
/ 07 июня 2019

C ++ не имеет (насколько мне известно) встроенного способа автоматического создания функций установки / получения.

Возможно, вам удастся применить некоторую макро-магию (со всеми ее подводными камнями), в противном случае ваши варианты невелики.

0 голосов
/ 07 июня 2019

Я могу придумать следующие альтернативы:

  1. Некоторые IDE автоматически генерируют методы get, set для членов данных класса. Я не уверен, возможно ли это для C ++ IDE. Но я знаю, что Eclipse IDE для Java это делает. Вы можете проверить один раз, есть ли в Eclipse IDE для C ++ такая возможность.

  2. Вы можете написать короткий сценарий оболочки или сценарий python для автоматической генерации метода get, set с учетом текстового файла, содержащего имена и типы переменных в каждой строке.

  3. По умолчанию все члены структуры являются публичными. Так что используйте struct. Или, если вы решите использовать класс, поместите все элементы данных в публичный раздел. Если вы не делаете ничего, кроме простого набора, получите, тогда, возможно, это будет нормально. Однако отладка будет утомительной в случае, если у вас возникнут проблемы с изменениями в элементах данных.

...