Добавление инвариантной проверки к каждому методу класса - PullRequest
1 голос
/ 06 августа 2010

У меня есть класс со многими методами, и я хотел бы проверить условия до / после, например, mMember == null, и вызвать функцию x (), если нет.

Можно ли автоматически добавлять предварительные / последующие условия для каждого члена этого класса? Класс определен в class.h, а все методы определены в class.cpp. Возможность определения макроса в начале class.cpp была бы идеальной, если бы она вставлялась в каждую запись функции только в этом файле.

Я знаю, что могу вручную добавить одно и то же предусловие / постусловие (используя деструкторы) к каждой записи функции, но я продолжаю сталкиваться с этой проблемой снова и снова. Это не идеально, так как я не могу проверить эти изменения и должен поддерживать их локально, и они имеют корень от изменений других людей.

1 Ответ

2 голосов
/ 06 августа 2010

Мне никогда не удавалось сделать это в C ++; Я всегда использовал набор макросов, вручную добавляемых к каждой функции-члену.

Это звучит как работа, которая может хорошо подходить для аспектно-ориентированного программирования, и я вижу, что есть библиотеки для AOP на C ++, такие как AspectC ++. Возможно, стоит хотя бы взглянуть на один из них и посмотреть, можно ли его использовать для решения вашей проблемы.

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