У меня есть класс, созданный из перечисления, который можно протестировать в любой момент в будущем, возвращая bool независимо от того, прошел ли он, например:
ConditionObject cnd(CondIsTuesday);
door.setOpenCondition(cnd);
Тогда у двери есть условие, что онаможно использовать для определения его состояния.
Однако я хочу перегрузить && и ||операторы для этого класса условий таковы, что они могут быть объединены в цепочку и работать ожидаемым образом с нормальной логической логикой.Например, сделать возможным следующее:
ConditionObject cnd(ConditionObject(CondIsTuesday) || (ConditionObject(CondIsThursday) && ConditionObject(CondIsAfterEight)));
door.openCondition(cnd);
Теперь дверь будет открыта во вторник или четверг после восьми.
Я не был уверен в правильном способе описания проблемычто также затрудняло поиск решения, если оно уже существовало.Спасибо за любую помощь в решении проблемы!
[Edit] Я не думаю, что объяснил это достаточно хорошо, я не хочу, чтобы ConditionObject оценивался во время создания объекта, а вместо этогосохраните всю логику в конечном ConditionObject так, чтобы ее можно было лениво измерить.
Используя второй пример выше, если я создал объект cnd в понедельник и никогда не приведу условие двери в другое, он откроется во вторникпотому что условие, которое ему было дано, начало возвращаться к истине.