#ifndef POLICY_H #define POLICY_H #include #include class Actor; class Policy { public: explicit Policy(const std::string& satisfaction, const std::string& dissatisfaction); virtual ~Policy() = 0; struct CheckResult { bool satisfied = false; std::string commentary; }; virtual CheckResult check(const std::shared_ptr &actor) const = 0; protected: CheckResult composeMessageFromResult(bool result) const; std::string _commentary_on_satisfaction; std::string _commentary_on_dissatisfaction; }; #endif // POLICY_H