2010-08-06 2 views
1

У меня есть класс со многими методами и я бы хотел проверить условия pre/post, такие как mMember == null и invoke function x(), если нет.Добавление инвариантной проверки ко всем методам класса

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

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

+0

Во-первых, это «инвариант», а не «инвариантный». Во-вторых, вы упоминаете инвариант в названии вопроса, но в теле вы указываете только «условия до/после». –

+0

@Alexandros: исправлено –

+0

@Alexandros. Вы можете проверить инвариант, имея те же предварительные условия, что и проблема. – Chazz

ответ

2

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

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

Смежные вопросы